Editing Talk:GimConv

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

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:
[[Rcomage]] uses a GimConv.cfg (configuration file) edited by Zinga Burga to improve compatibility with rcoedit/rcomage and the GIM formats used in PSP
[[Rcomage]] uses a GimConv.cfg (configuration file) edited by Zinga Burga to improve compatibility with rcoedit/rcomage and the GIM formats used in PSP


See: a comparison [https://www.psdevwiki.com/ps3/File:0jIOifM.jpg GimConv.cfg official vs rcomage], and this [http://www.psx-place.com/threads/adding-rco-image-files.2867/#post-22246 talk]
See: a comparison [https://i.imgur.com/0jIOifM.jpg GimConv.cfg official vs rcomage], and this [http://www.psx-place.com/threads/adding-rco-image-files.2867/#post-22246 talk]


==Help screen==
==Help screen==
Line 8: Line 8:


*'''Removed at help screen:'''
*'''Removed at help screen:'''
{{Boxcode|code=<syntaxhighlight lang="c">
{{Boxcode|content=<syntaxhighlight lang="c">
//================================================================
//================================================================
//  gimconv configuration
//  gimconv configuration
Line 22: Line 22:


*'''Added at help screen:'''
*'''Added at help screen:'''
{{Boxcode|code=<syntaxhighlight lang="c">
{{Boxcode|content=<syntaxhighlight lang="c">
//================================================================
//================================================================
//  gimconv configuration
//  gimconv configuration
Line 50: Line 50:


*'''Changed default settings:'''
*'''Changed default settings:'''
{{Boxcode|code=<syntaxhighlight lang="c">
{{Boxcode|content=<syntaxhighlight lang="c">
//----------------------------------------------------------------
//----------------------------------------------------------------
//  default settings
//  default settings
Line 61: Line 61:


*'''Removed default settings:'''
*'''Removed default settings:'''
{{Boxcode|code=<syntaxhighlight lang="c">
{{Boxcode|content=<syntaxhighlight lang="c">
//----------------------------------------------------------------
//----------------------------------------------------------------
//  default settings
//  default settings
Line 74: Line 74:
===Default settings Talk===
===Default settings Talk===
*'''pixel_order'''
*'''pixel_order'''
**Originally (in the GimConv.cfg released by sony, intended for PS3) it was set to '''normal''' (this matches with the GIM formats used in PS3). For rcomage was changed to '''faster''' because all the GIM formats in PSP uses it
**Originally (in the GimConv.cfg released by sony, intended for PS3) it was set to '''normal''' (this matches with the GIM format most used in PS3, and doesnt matches with the second most used GIM format in PS3 that needs to be '''default'''). For rcomage was changed to '''faster''' because all the GIM formats in PSP uses it
**There is not a way to choose a default value for '''pixel_order''' that fits with the requirements of all known GIM formats, because one way or the other we are breaking some GIM files (either PSP or PS3), the solution is to override this setting in every "option" you want to use (more info below)
**As you can see there is not a way to choose a default value for '''pixel_order''' that fits with the requirements of all known GIM formats, because one way or the other we are breaking some GIM files (either PSP or some for PS3), the solution to bypass this problem is to override this setting in every "option" you want to use (more info below)
**In short... this change causes an small harm to PS3 GIM formats, but considering there is not really a single solution to fix this problem... is ok like this
**In short... this change causes an small harm to PS3 GIM formats, but considering there is not really a single solution to fix this problem... is ok like this


Line 84: Line 84:
**As explained before... this problem can be bypassed by overriding this setting, either from command line or editing the file GimConv.cfg to create a custom option with the size values specific for PS3
**As explained before... this problem can be bypassed by overriding this setting, either from command line or editing the file GimConv.cfg to create a custom option with the size values specific for PS3
**Some GIM examples from PS3 with images bigger than 512 pixels in '''explore_plugin_full.rco''':
**Some GIM examples from PS3 with images bigger than 512 pixels in '''explore_plugin_full.rco''':
***'''tex_playing.gim''' (30x900 pixels) https://www.psdevwiki.com/ps3/File:2rjGdbe
***'''tex_playing.gim''' (30x900 pixels) http://imgur.com/2rjGdbe
***'''tex_playing_shadow.gim''' (30x900 pixels)
***'''tex_playing_shadow.gim''' (30x900 pixels)
***'''tex_opt_obi.gim''' (660x6 pixels)
***'''tex_opt_obi.gim''' (660x6 pixels)
**Some GIM examples from PS3 with images bigger than 512 pixels in '''custom_render_plugin.rco''':
**Some GIM examples from PS3 with images bigger than 512 pixels in '''custom_render_plugin.rco ''':
***'''tex_ps3logo.gim''' (1200x128 pixels)
***'''tex_ps3logo.gim''' (1200x128 pixels)
***'''tex_scelogo.gim''' (1024x64 pixels)
***'''tex_scelogo.gim''' (1024x64 pixels)
**Some GIM examples from PS3 with images bigger than 512 pixels in '''sysconf_plugin.rco''':
***'''tex_arrow_anim.gim''' (120x2280 pixels)
***'''tex_arrow_anim_shadow.gim''' (120x2280 pixels)
***'''tex_sce_logo''' (1024x64 pixels)
**Some GIM examples from PS3 with images bigger than 512 pixels in '''ycon_manual_plugin.rco''':
***'''tex_guide.gim''' (520x200 pixels)


*'''output_sequence'''
*'''output_sequence'''
Line 106: Line 100:
*'''pixel_order'''
*'''pixel_order'''
**Originally (in the GimConv.cfg released by sony, intended for PS3) this was added by sony as a "override default settings <abbr title="this is one of the cases where sony doesnt wants to modify his old code and instead they adds some kind of patch that overrides the old code">patch</abbr>" applyed over GimConv.cfg (a section named '''PS3 OSD default settings''') with the value '''pixel_order = normal'''. For rcomage it was removed (so by default it loads '''pixel_order = faster''' instead, that appears some lines before in GimConv.cfg)
**Originally (in the GimConv.cfg released by sony, intended for PS3) this was added by sony as a "override default settings <abbr title="this is one of the cases where sony doesnt wants to modify his old code and instead they adds some kind of patch that overrides the old code">patch</abbr>" applyed over GimConv.cfg (a section named '''PS3 OSD default settings''') with the value '''pixel_order = normal'''. For rcomage it was removed (so by default it loads '''pixel_order = faster''' instead, that appears some lines before in GimConv.cfg)
**PSP needs to use "faster", and PS3 needs "normal", so again, this needs to be overrided inside the "options" specific for each GIM format... or with a long command line specifying this overrides
**PSP needs to use "faster" always, and PS3 needs "normal" and "default" (because in PS3 there are 2 different GIM formats), so again, this needs to be overrided inside the "options" specific for each GIM format... or with a long command line specifying this overrides


*'''pixel_channel'''
*'''pixel_channel'''
Line 119: Line 113:
==Options==
==Options==
*'''Added options:'''
*'''Added options:'''
{{Boxcode|code=<syntaxhighlight lang="c">
{{Boxcode|content=<syntaxhighlight lang="c">
//--------------------------------------------------------
//--------------------------------------------------------
//  process option
//  process option
Line 147: Line 141:


*'''Removed options:'''
*'''Removed options:'''
{{Boxcode|code=<syntaxhighlight lang="c">
{{Boxcode|content=<syntaxhighlight lang="c">
//--------------------------------------------------------
//--------------------------------------------------------
//  mode option
//  mode option
Line 189: Line 183:
*'''The other removed options'''
*'''The other removed options'''
**Doesnt have much importance, could cause problems depending in what you have for default settings in the lines at top of GimView.cfg you should not use this options directly or individually
**Doesnt have much importance, could cause problems depending in what you have for default settings in the lines at top of GimView.cfg you should not use this options directly or individually
=GimConv.cfg notes (official version)=
This is the configuration file released by sony as part of the [http://uk.playstation.com/ps3/support/settings/detail/linked235336/item85346/Download-PlayStation-3-Custom-Theme-Guidelines/ PS3 Custom Theme Toolbox]
Note there are some modifications made officially by sony at a later version because GimComv was initially made for PSP (those initial GimComv versions compatibles with "PSP only" probably didnt had this PS3 specific settings), but this public release of GimConv was released as part of a toolkit to build PS3 themes so it has some settings specific for PS3
This group at top on the config file are default settings (for PS3) that overrides other default settings of an older version of GimComv (for PSP). They are overwriting default values because the same option is specifyed before in the file, so the last one overrrides the previous one with the same name (and also was added a new option named '''extend_edge''' that should be PS3 specific)
{{Boxcode|code=<syntaxhighlight lang="c">
//----------------------------------------------------------------
//  default settings
//----------------------------------------------------------------
//  PS3 OSD default settings
format_endian = big // -B
pixel_order = normal // -N
pixel_channel = default // -R
image_format = rgba8888 // --image_format rgba8888
extend_edge = off
</syntaxhighlight>}}
This other group seems to be options for GIM formats used in PS3
{{Boxcode|code=<syntaxhighlight lang="c">
//--------------------------------------------------------
//  PS3 OSD specific options
//--------------------------------------------------------
option -B {
format_endian = big
}
option -X {
pixel_channel = abgr
}
option -R {
pixel_channel = default
}
option -DXT {
pixel_order = default
pixel_channel = default
image_format = default
}
option -E {
extend_edge = on
}
</syntaxhighlight>}}


=Examples=
=Examples=
This is a sequence of image conversions that works as examples for wiki and also as an exercise for practising, the Gimconv.exe options used to create them are discussed on frontpage, -ps3rgba8888 and -ps3dxt5 are the GIM formats used in PS3, the others are just experiments
This is a sequence of image conversions that works as examples for wiki and also as an exercise for practising, the Gimconv.exe options used to create them are discussed on frontpage, -ps3bpp32 and -dxt5 are the GIM formats used in PS3, the others are just experiments


==BMP==
==BMP==
The image used for the tests has a size of 4x2 pixels because in RGBA 32bits format the color of a single pixel is stored in 4 bytes and in a hexeditor view by default there are 16 bytes in every row so one row of the image corresponds to one row of the hexeditor
The image used for the tests has a size of 4x8 pixels because: 1) In RGBA 32bits format the color of a single pixel is stored in 4 bytes and in a hexeditor view by default there are 16 bytes in every row so one row of the image corresponds to one row of the hexeditor. 2) It seems GIS format stores the pixels in "chunks" of 32, so the image used for the tests is 4*8=32 pixels in total


The image is a [https://en.wikipedia.org/wiki/BMP_file_format BMP] with 32 bits color depth, and named '''4x2_CA5Exy_32bits.bmp''', you can click in the image at right in the table below and download it, the small table at left below is a wiki representation of the hexadecimal values of all the pixels
The image is a [https://en.wikipedia.org/wiki/BMP_file_format BMP] with 32 bits color depth, and named '''4x8_CA5Exy_32bits.bmp''', you can click in the image at right in the table below and download it, the small table at left below is a wiki representation of the hexadecimal values of all the pixels


<div>
{| class="wikitable"
{| class="wikitable"
|+4x2_CA5Exy_32bits.bmp
|+4x8_CA5Exy_32bits.bmp
|
|
{| class="wikitable" style="font-size:x-small;"
{| class="wikitable" style="font-size:x-small;"
Line 255: Line 201:
|-
|-
| {{cellcolors|#ca5e21}} 0xCA5E2100 || {{cellcolors|#ca5e22}} 0xCA5E2200 || {{cellcolors|#ca5e23}} 0xCA5E2300 || {{cellcolors|#ca5e24}} 0xCA5E2400
| {{cellcolors|#ca5e21}} 0xCA5E2100 || {{cellcolors|#ca5e22}} 0xCA5E2200 || {{cellcolors|#ca5e23}} 0xCA5E2300 || {{cellcolors|#ca5e24}} 0xCA5E2400
|-
| {{cellcolors|#ca5e31}} 0xCA5E3100 || {{cellcolors|#ca5e32}} 0xCA5E3200 || {{cellcolors|#ca5e33}} 0xCA5E3300 || {{cellcolors|#ca5e34}} 0xCA5E3400
|-
| {{cellcolors|#ca5e41}} 0xCA5E4100 || {{cellcolors|#ca5e42}} 0xCA5E4200 || {{cellcolors|#ca5e43}} 0xCA5E4300 || {{cellcolors|#ca5e44}} 0xCA5E4400
|-
| {{cellcolors|#ca5e51}} 0xCA5E5100 || {{cellcolors|#ca5e52}} 0xCA5E5200 || {{cellcolors|#ca5e53}} 0xCA5E5300 || {{cellcolors|#ca5e54}} 0xCA5E5400
|-
| {{cellcolors|#ca5e61}} 0xCA5E6100 || {{cellcolors|#ca5e62}} 0xCA5E6200 || {{cellcolors|#ca5e63}} 0xCA5E6300 || {{cellcolors|#ca5e64}} 0xCA5E6400
|-
| {{cellcolors|#ca5e71}} 0xCA5E7100 || {{cellcolors|#ca5e72}} 0xCA5E7200 || {{cellcolors|#ca5e73}} 0xCA5E7300 || {{cellcolors|#ca5e74}} 0xCA5E7400
|-
| {{cellcolors|#ca5e81}} 0xCA5E8100 || {{cellcolors|#ca5e82}} 0xCA5E8200 || {{cellcolors|#ca5e83}} 0xCA5E8300 || {{cellcolors|#ca5e84}} 0xCA5E8400
|}
|}
|
|
[[File:4x2 CA5Exy 32bits.bmp|84px]]
[[File:4x8 CA5Exy 32bits.bmp|84px]]
|}
|}
<span style="font-size:x-small">
{{widedot}}'''x''' = rows<br>
{{widedot}}'''y''' = columns
</span>
</div>
<br style="clear: both;" />
  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
   
   
  00000000  42 4D 58 00 00 00 00 00 00 00 36 00 00 00 28 00  BMX.......6...(.
  00000000  42 4D B8 00 00 00 00 00 00 00 36 00 00 00 28 00  BM¸.......6...(.
  00000010  00 00 04 00 00 00 02 00 00 00 01 00 20 00 00 00  ............ ...
  00000010  00 00 04 00 00 00 08 00 00 00 01 00 20 00 00 00  ............ ...
  00000020  00 00 00 00 00 00 12 0B 00 00 12 0B 00 00 00 00  ................
  00000020  00 00 00 00 00 00 12 0B 00 00 12 0B 00 00 00 00  ................
  00000030  00 00 00 00 00 00 <span style="background:#CA5E24;">21 5E CA 00 22 5E CA 00 23 5E</span>  ......!^Ê."^Ê.#^
  00000030  00 00 00 00 00 00 <span style="background:#C0FFEE;">81 5E CA 00 82 5E CA 00 83 5E</span>  .......^Ê.‚^Ê.ƒ^
  00000040 <span style="background:#CA5E24;">CA 00 24 5E CA 00 11 5E CA 00 12 5E CA 00 13 5E</span>  Ê.$^Ê..^Ê..^Ê..^
00000040  <span style="background:#C0FFEE;">CA 00 84 5E CA 00 71 5E CA 00 72 5E CA 00 73 5E</span>  Ê.„^Ê.q^Ê.r^Ê.s^
  00000050 <span style="background:#CA5E24;">CA 00 14 5E CA 00</span> 00 00                          Ê..^Ê...
00000050  <span style="background:#C0FFEE;">CA 00 74 5E CA 00 61 5E CA 00 62 5E CA 00 63 5E</span>  Ê.t^Ê.a^Ê.b^Ê.c^
00000060  <span style="background:#C0FFEE;">CA 00 64 5E CA 00 51 5E CA 00 52 5E CA 00 53 5E</span>  Ê.d^Ê.Q^Ê.R^Ê.S^
00000070  <span style="background:#C0FFEE;">CA 00 54 5E CA 00 41 5E CA 00 42 5E CA 00 43 5E</span>  Ê.T^Ê.A^Ê.B^Ê.C^
00000080  <span style="background:#C0FFEE;">CA 00 44 5E CA 00 31 5E CA 00 32 5E CA 00 33 5E</span>  Ê.D^Ê.1^Ê.2^Ê.3^
00000090  <span style="background:#C0FFEE;">CA 00 34 5E CA 00 21 5E CA 00 22 5E CA 00 23 5E</span>  Ê.4^Ê.!^Ê."^Ê.#^
  000000A0 <span style="background:#C0FFEE;">CA 00 24 5E CA 00 11 5E CA 00 12 5E CA 00 13 5E</span>  Ê.$^Ê..^Ê..^Ê..^
  000000B0 <span style="background:#C0FFEE;">CA 00 14 5E CA 00</span> 00 00                          Ê..^Ê...


==GIM PS3 DXT5==
==GIM PS3 DXT5==
*Second most common GIM format used in PS3
*Second most common GIM format used in PS3
{{Keyboard|content=<syntaxhighlight lang="bash">GimConv.exe 4x2_CA5Exy_32bits.bmp -o 4x2_CA5Exy_32bits_ps3dxt5.gim -ps3dxt5</syntaxhighlight>}}
{{Keyboard|content='''GimConv.exe 4x8_CA5Exy_32bits.bmp -o 4x8_CA5Exy_32bits_ps3dxt5.gim -ps3dxt5'''}}
  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
   
   
  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....
  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....
  00000010  00 02 00 00 00 00 00 80 00 00 00 10 00 00 00 10  ...............
  00000010  00 02 00 00 00 00 00 90 00 00 00 10 00 00 00 10  ................
  00000020  00 03 00 00 00 00 00 70 00 00 00 10 00 00 00 10  .......p........
  00000020  00 03 00 00 00 00 00 80 00 00 00 10 00 00 00 10  ...............
  00000030  00 04 00 00 00 00 00 60 00 00 00 60 00 00 00 10  .......`...`....
  00000030  00 04 00 00 00 00 00 70 00 00 00 70 00 00 00 10  .......p...p....
  00000040  00 30 00 00 00 0A 00 00 00 04 00 02 00 08 00 04  .0..............
  00000040  00 30 00 00 00 0A 00 00 00 04 00 08 00 08 00 04  .0..............
  00000050  00 04 00 02 00 00 00 00 00 00 00 30 00 00 00 40  ...........0...@
  00000050  00 04 00 02 00 00 00 00 00 00 00 30 00 00 00 40  ...........0...@
  00000060  00 00 00 50 00 00 00 00 00 01 00 01 00 03 00 01  ...P............
  00000060  00 00 00 60 00 00 00 00 00 01 00 01 00 03 00 01  ...`............
  00000070  00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00  ...@............
  00000070  00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00  ...@............
  00000080  <span style="background:#CA5E24;">FF 00 49 92 24 49 92 24 E4 CA E2 CA 55 00 00 00</span>  ÿ.I’$I’$äÊâÊU...
  00000080  <span style="background:#C0FFEE;">FF 00 49 92 24 49 92 24 E8 CA E2 CA 55 FF AA 00</span>  ÿ.I’$I’$èÊâÊUÿª.
 
00000090  <span style="background:#C0FFEE;">FF 00 49 92 24 49 92 24 F0 CA EA CA 55 FF AA 00</spanÿ.I’$I’$ðÊêÊUÿª.
{{Keyboard|content=<syntaxhighlight lang="bash">GimConv.exe 4x2_CA5Exy_32bits.bmp -o 4x2_CA5Exy_32bits_ps3dxt5.gis -ps3dxt5 -S</syntaxhighlight>}}
  .GIS 1.00
Picture "picture-0" {
Image "image-0" {
Format DXT5
Order NORMAL
Width 4
Height 2
PitchAlign 4
HeightAlign 4
PlaneMask 0x00000000
LevelType MIPMAP
LevelCount 1
FrameType SEQUENCE
FrameCount 1
Pixels "pixels-0" DXT5 NORMAL 4 2 4 4 {
0x00000055 0xCAE2CAE4 0x49249249 0x00FF2492
}
}
}


==GIM PS3 RGBA8888==
==GIM PS3 RGBA32==
*First most common GIM format used in PS3
*First most common GIM format used in PS3
{{Keyboard|content=<syntaxhighlight lang="bash">GimConv.exe 4x2_CA5Exy_32bits.bmp -o 4x2_CA5Exy_32bits_ps3rgba8888.gim -ps3rgba8888</syntaxhighlight>}}
{{Keyboard|content='''GimConv.exe 4x8_CA5Exy_32bits.bmp -o 4x8_CA5Exy_32bits_ps3bpp32.gim -ps3bpp32'''}}
  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
   
   
  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....
  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....
  00000010  00 02 00 00 00 00 00 90 00 00 00 10 00 00 00 10  ................
  00000010  00 02 00 00 00 00 00 F0 00 00 00 10 00 00 00 10  .......ð........
  00000020  00 03 00 00 00 00 00 80 00 00 00 10 00 00 00 10  ...............
  00000020  00 03 00 00 00 00 00 E0 00 00 00 10 00 00 00 10  .......à........
  00000030  00 04 00 00 00 00 00 70 00 00 00 70 00 00 00 10  .......p...p....
  00000030  00 04 00 00 00 00 00 D0 00 00 00 D0 00 00 00 10  .......Ð...Ð....
  00000040  00 30 00 00 00 03 00 00 00 04 00 02 00 20 00 10  .0........... ..
  00000040  00 30 00 00 00 03 00 00 00 04 00 08 00 20 00 10  .0........... ..
  00000050  00 01 00 02 00 00 00 00 00 00 00 30 00 00 00 40  ...........0...@
  00000050  00 01 00 02 00 00 00 00 00 00 00 30 00 00 00 40  ...........0...@
  00000060  00 00 00 60 00 00 00 00 00 01 00 01 00 03 00 01  ...`............
  00000060  00 00 00 C0 00 00 00 00 00 01 00 01 00 03 00 01  ...À............
  00000070  00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00  ...@............
  00000070  00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00  ...@............
  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:#C0FFEE;">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:#C0FFEE;">CA 5E 21 00 CA 5E 22 00 CA 5E 23 00 CA 5E 24 00</span>  Ê^!.Ê^".Ê^#.Ê^$.
000000A0  <span style="background:#C0FFEE;">CA 5E 31 00 CA 5E 32 00 CA 5E 33 00 CA 5E 34 00</span>  Ê^1.Ê^2.Ê^3.Ê^4.
000000B0  <span style="background:#C0FFEE;">CA 5E 41 00 CA 5E 42 00 CA 5E 43 00 CA 5E 44 00</span>  Ê^A.Ê^B.Ê^C.Ê^D.
000000C0  <span style="background:#C0FFEE;">CA 5E 51 00 CA 5E 52 00 CA 5E 53 00 CA 5E 54 00</span>  Ê^Q.Ê^R.Ê^S.Ê^T.
000000D0  <span style="background:#C0FFEE;">CA 5E 61 00 CA 5E 62 00 CA 5E 63 00 CA 5E 64 00</span>  Ê^a.Ê^b.Ê^c.Ê^d.
000000E0  <span style="background:#C0FFEE;">CA 5E 71 00 CA 5E 72 00 CA 5E 73 00 CA 5E 74 00</span>  Ê^q.Ê^r.Ê^s.Ê^t.
000000F0  <span style="background:#C0FFEE;">CA 5E 81 00 CA 5E 82 00 CA 5E 83 00 CA 5E 84 00</span>  Ê^..Ê^‚.Ê^ƒ.Ê^„.


{{Keyboard|content=<syntaxhighlight lang="bash">GimConv.exe 4x2_CA5Exy_32bits.bmp -o 4x2_CA5Exy_32bits_ps3rgba8888.gis -ps3rgba8888 -S</syntaxhighlight>}}
==GIM PS3 RGBA32 with footer==
.GIS 1.00
*First most common GIM format used in PS3 '''with footer !'''
{{Keyboard|content='''GimConv.exe 4x8_CA5Exy_32bits.bmp -o 4x8_CA5Exy_32bits_ps3bpp32_footer.gim -ps3bpp32 --update_fileinfo on'''}}
Picture "picture-0" {
Image "image-0" {
Format RGBA8888
Order NORMAL
Width 4
Height 2
PitchAlign 16
HeightAlign 1
PlaneMask 0x00000000
LevelType MIPMAP
LevelCount 1
FrameType SEQUENCE
FrameCount 1
Pixels "pixels-0" RGBA8888 NORMAL 4 2 16 1 {
0x00115ECA 0x00125ECA 0x00135ECA 0x00145ECA
0x00215ECA 0x00225ECA 0x00235ECA 0x00245ECA
}
}
}
 
==GIM PS3 RGBA8888 with fileinfo==
*First most common GIM format used in PS3 '''with fileinfo !''' (colored in brown below)
{{Keyboard|content=<syntaxhighlight lang="bash">GimConv.exe 4x2_CA5Exy_32bits.bmp -o 4x2_CA5Exy_32bits_ps3rgba8888_footer.gim -ps3rgba8888 --update_fileinfo on</syntaxhighlight>}}
  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
   
   
  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....
  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....
  00000010  00 02 00 00 <span style="background:#ccaa88;">00 00 00 EC</span> 00 00 00 10 00 00 00 10  .......ì........
  00000010  00 02 00 00 <span style="background:#FF6666;">00 00 01 4C</span> 00 00 00 10 00 00 00 10  .......L........
  00000020  00 03 00 00 00 00 00 80 00 00 00 10 00 00 00 10  ...............
  00000020  00 03 00 00 00 00 00 E0 00 00 00 10 00 00 00 10  .......à........
  00000030  00 04 00 00 00 00 00 70 00 00 00 70 00 00 00 10  .......p...p....
  00000030  00 04 00 00 00 00 00 D0 00 00 00 D0 00 00 00 10  .......Ð...Ð....
  00000040  00 30 00 00 00 03 00 00 00 04 00 02 00 20 00 10  .0........... ..
  00000040  00 30 00 00 00 03 00 00 00 04 00 08 00 20 00 10  .0........... ..
  00000050  00 01 00 02 00 00 00 00 00 00 00 30 00 00 00 40  ...........0...@
  00000050  00 01 00 02 00 00 00 00 00 00 00 30 00 00 00 40  ...........0...@
  00000060  00 00 00 60 00 00 00 00 00 01 00 01 00 03 00 01  ...`............
  00000060  00 00 00 C0 00 00 00 00 00 01 00 01 00 03 00 01  ...À............
  00000070  00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00  ...@............
  00000070  00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00  ...@............
  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:#C0FFEE;">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:#C0FFEE;">CA 5E 21 00 CA 5E 22 00 CA 5E 23 00 CA 5E 24 00</span>  Ê^!.Ê^".Ê^#.Ê^$.
  000000A0  <span style="background:#ccaa88;">00 FF 00 00 00 00 00 5C 00 00 00 5C 00 00 00 10</span>  .ÿ.....\...\....
  000000A0  <span style="background:#C0FFEE;">CA 5E 31 00 CA 5E 32 00 CA 5E 33 00 CA 5E 34 00</span>  Ê^1.Ê^2.Ê^3.Ê^4.
  000000B0 <span style="background:#ccaa88;">34 78 32 5F 43 41 35 45 78 79 5F 33 32 62 69 74</span>  4x2_CA5Exy_32bit
000000B0  <span style="background:#C0FFEE;">CA 5E 41 00 CA 5E 42 00 CA 5E 43 00 CA 5E 44 00</span>  Ê^A.Ê^B.Ê^C.Ê^D.
  000000C0 <span style="background:#ccaa88;">73 2E 62 6D 70 00 41 64 6D 69 6E 69 73 74 72 61</span>  s.bmp.Administra
000000C0  <span style="background:#C0FFEE;">CA 5E 51 00 CA 5E 52 00 CA 5E 53 00 CA 5E 54 00</span>  Ê^Q.Ê^R.Ê^S.Ê^T.
  000000D0 <span style="background:#ccaa88;">74 6F 72 00 53 75 6E 20 41 70 72 20 31 35 20 30</span>  tor.Sun Apr 15 0
000000D0  <span style="background:#C0FFEE;">CA 5E 61 00 CA 5E 62 00 CA 5E 63 00 CA 5E 64 00</span>  Ê^a.Ê^b.Ê^c.Ê^d.
  000000E0 <span style="background:#ccaa88;">31 3A 32 35 3A 30 32 20 32 30 31 38 00 47 69 6D</span>  1:25:02 2018.Gim
000000E0  <span style="background:#C0FFEE;">CA 5E 71 00 CA 5E 72 00 CA 5E 73 00 CA 5E 74 00</span>  Ê^q.Ê^r.Ê^s.Ê^t.
  000000F0 <span style="background:#ccaa88;">43 6F 6E 76 20 31 2E 32 30 68 00 00</span>              Conv 1.20h..
000000F0  <span style="background:#C0FFEE;">CA 5E 81 00 CA 5E 82 00 CA 5E 83 00 CA 5E 84 00</span>  Ê^..Ê^‚.Ê^ƒ.Ê^„.
 
00000100  <span style="background:#FFAAAA;">00 FF 00 00 00 00 00 5C 00 00 00 5C 00 00 00 10</span>  .ÿ.....\...\....
{{Keyboard|content=<syntaxhighlight lang="bash">GimConv.exe 4x2_CA5Exy_32bits.bmp -o 4x2_CA5Exy_32bits_ps3rgba8888_footer.gis -ps3rgba8888 --update_fileinfo on -S</syntaxhighlight>}}
  00000110 <span style="background:#FF6666;">34 78 38 5F 43 41 35 45 78 79 5F 33 32 62 69 74</span>  4x8_CA5Exy_32bit
.GIS 1.00
  00000120 <span style="background:#FF6666;">73 2E 62 6D 70 00 41 64 6D 69 6E 69 73 74 72 61</span>  s.bmp.Administra
  00000130 <span style="background:#FF6666;">74 6F 72 00 53 61 74 20 41 70 72 20 31 34 20 32</span>  tor.Sat Apr 14 2
Picture "picture-0" {
  00000140 <span style="background:#FF6666;">30 3A 30 38 3A 35 34 20 32 30 31 38 00 47 69 6D</span>  0:08:54 2018.Gim
Image "image-0" {
  00000150 <span style="background:#FF6666;">43 6F 6E 76 20 31 2E 32 30 68 00 00</span>              Conv 1.20h..
Format RGBA8888
Order NORMAL
Width 4
Height 2
PitchAlign 16
HeightAlign 1
PlaneMask 0x00000000
LevelType MIPMAP
LevelCount 1
FrameType SEQUENCE
FrameCount 1
Pixels "pixels-0" RGBA8888 NORMAL 4 2 16 1 {
0x00115ECA 0x00125ECA 0x00135ECA 0x00145ECA
0x00215ECA 0x00225ECA 0x00235ECA 0x00245ECA
}
}
}
FileInfo "file_info-0" {
ProjectName "4x2_CA5Exy_32bits.bmp"
UserName "Administrator"
SavedDate "Sun Apr 15 01:25:02 2018"
Originator "GimConv 1.20h"
}


If you compare this file with the previous one (same format without footer) the only differences are the bytes marked in red


==GIM PS3 RGBA8888 with fileinfo and userdata==
*The value at the header is the file size - 0x10, it changes because the file was increased in size (to add the footer)
This is a test where has been removed all the paddings, by using an image named '''[[:Image:4x2_CA5Exy_32bits.bmp|NOPADD.BMP]]''' and a file named '''NOPADD.DAT''' containing the bytes 0x555345524441544141524541 ('''USERDATAAREA''')


{{Keyboard|content=<syntaxhighlight lang="bash">GimConv.exe NOPADD.BMP -o NOPADD.gim -ps3rgba8888 --update_fileinfo on --update_userdata on</syntaxhighlight>}}
*Footer is composed by:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
**'''4x8_CA5Exy_32bits.bmp''' (original file name)
**'''Administrator''' (windows user account)
00000000  2E 47 49 4D 31 2E 30 30 00 50 53 50 00 00 00 00  .GIM1.00.PSP....
**'''Sat Apr 14 20:08:54 2018''' (timestamp)
00000010  00 02 00 00 00 00 00 E0 00 00 00 10 00 00 00 10  .......à........
**'''GimConv 1.20h''' (GimConv.exe version used to create the GIM file)
00000020  00 03 00 00 00 00 00 80 00 00 00 10 00 00 00 10  .......€........
00000030  00 04 00 00 00 00 00 70 00 00 00 70 00 00 00 10  .......p...p....
00000040  00 30 00 00 00 03 00 00 00 04 00 02 00 20 00 10  .0........... ..
00000050  00 01 00 02 00 00 00 00 00 00 00 3C 00 00 00 40  ...........<...@
00000060  00 00 00 60 00 00 00 00 00 01 00 01 00 03 00 01  ...`............
00000070  55 53 45 52 44 41 54 41 41 52 45 41 00 00 00 40  USERDATAAREA...@
00000080  CA 5E 11 00 CA 5E 12 00 CA 5E 13 00 CA 5E 14 00  Ê^..Ê^..Ê^..Ê^..
00000090  CA 5E 21 00 CA 5E 22 00 CA 5E 23 00 CA 5E 24 00  Ê^!.Ê^".Ê^#.Ê^$.
000000A0  00 FF 00 00 00 00 00 50 00 00 00 50 00 00 00 10  .ÿ.....P...P....
000000B0  4E 4F 50 41 44 44 2E 42 4D 50 00 41 64 6D 69 6E  NOPADD.BMP.Admin
000000C0  69 73 74 72 61 74 6F 72 00 4D 6F 6E 20 41 70 72  istrator.Mon Apr
000000D0  20 31 36 20 31 37 3A 34 38 3A 35 37 20 32 30 31  16 17:48:57 201
000000E0  38 00 47 69 6D 43 6F 6E 76 20 31 2E 32 30 68 00  8.GimConv 1.20h.
 
{{Keyboard|content=<syntaxhighlight lang="bash">GimConv.exe NOPADD.BMP -o NOPADD.gis -ps3rgba8888 --update_fileinfo on --update_userdata on -S</syntaxhighlight>}}
.GIS 1.00
Picture "picture-0" {
Image "image-0" {
Format RGBA8888
Order NORMAL
Width 4
Height 2
PitchAlign 16
HeightAlign 1
PlaneMask 0x00000000
LevelType MIPMAP
LevelCount 1
FrameType SEQUENCE
FrameCount 1
UserData "userdata-0" {
0x52455355 0x41544144 0x41455241
}
Pixels "pixels-0" RGBA8888 NORMAL 4 2 16 1 {
0x00115ECA 0x00125ECA 0x00135ECA 0x00145ECA
0x00215ECA 0x00225ECA 0x00235ECA 0x00245ECA
}
}
}
FileInfo "file_info-0" {
ProjectName "NOPADD.BMP"
UserName "Administrator"
SavedDate "Mon Apr 16 17:49:10 2018"
Originator "GimConv 1.20h"
}


This is another test where has been added paddings, by using an image named '''[[:Image:4x2_CA5Exy_32bits.bmp|YESPADD.BMP]]''' and a file named '''YESPADD.DAT''' containing the bytes 0x55534552444154414152454158 ('''USERDATAAREAX''')
==GIS==
{{Keyboard|content=<syntaxhighlight lang="bash">GimConv.exe YESPADD.BMP -o YESPADD.gim -ps3rgba8888 --update_fileinfo on --update_userdata on</syntaxhighlight>}}
*This is the script format, it can be generated using any image format as input
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
{{Boxwarning1|content=When doing a '''GIM to GIS''' conversion like in the example below it seems are used some of the default settings from GimConv.cfg'''}}
{{Keyboard|content='''GimConv.exe 4x8_CA5Exy_32bits_ps3bpp32.gim -o 4x8_CA5Exy_32bits_ps3bpp32.gis -S}}
00000000  2E 47 49 4D 31 2E 30 30 00 50 53 50 00 00 00 00  .GIM1.00.PSP....
00000010  00 02 00 00 00 00 00 F4 00 00 00 10 00 00 00 10  .......ô........
00000020  00 03 00 00 00 00 00 90 00 00 00 10 00 00 00 10  ................
00000030  00 04 00 00 00 00 00 80 00 00 00 80 00 00 00 10  .......€...€....
00000040  00 30 00 00 00 03 00 00 00 04 00 02 00 20 00 10  .0........... ..
00000050  00 01 00 02 00 00 00 00 00 00 00 40 00 00 00 50  [email protected]
00000060  00 00 00 70 00 00 00 00 00 01 00 01 00 03 00 01  ...p............
00000070  55 53 45 52 44 41 54 41 41 52 45 41 58 <span style="background:#aaaaaa;">00 00 00</span>  USERDATAAREAX...
00000080  00 00 00 50 <span style="background:#aaaaaa;">00 00 00 00 00 00 00 00 00 00 00 00</span>  ...P............
00000090  CA 5E 11 00 CA 5E 12 00 CA 5E 13 00 CA 5E 14 00  Ê^..Ê^..Ê^..Ê^..
000000A0  CA 5E 21 00 CA 5E 22 00 CA 5E 23 00 CA 5E 24 00  Ê^!.Ê^".Ê^#.Ê^$.
000000B0  00 FF 00 00 00 00 00 54 00 00 00 54 00 00 00 10  .ÿ.....T...T....
000000C0  59 45 53 50 41 44 44 2E 42 4D 50 00 41 64 6D 69  YESPADD.BMP.Admi
000000D0  6E 69 73 74 72 61 74 6F 72 00 4D 6F 6E 20 41 70  nistrator.Mon Ap
000000E0  72 20 31 36 20 31 37 3A 35 31 3A 31 34 20 32 30  r 16 17:51:14 20
000000F0  31 38 00 47 69 6D 43 6F 6E 76 20 31 2E 32 30 68  18.GimConv 1.20h
00000100  00 <span style="background:#aaaaaa;">00 00 00</span>                                      ....


{{Keyboard|content=<syntaxhighlight lang="bash">GimConv.exe YESPADD.BMP -o YESPADD.gis -ps3rgba8888 --update_fileinfo on --update_userdata on -S</syntaxhighlight>}}
  .GIS 1.00
  .GIS 1.00
   
   
Line 480: Line 325:
  Image "image-0" {
  Image "image-0" {
  Format RGBA8888
  Format RGBA8888
  Order NORMAL
  Order PSPIMAGE
  Width 4
  Width 4
  Height 2
  Height 8
  PitchAlign 16
  PitchAlign 16
  HeightAlign 1
  HeightAlign 8
  PlaneMask 0x00000000
  PlaneMask 0x00000000
  LevelType MIPMAP
  LevelType MIPMAP
Line 490: Line 335:
  FrameType SEQUENCE
  FrameType SEQUENCE
  FrameCount 1
  FrameCount 1
UserData "userdata-0" {
  Pixels "pixels-0" RGBA8888 PSPIMAGE 4 8 16 8 {
0x52455355 0x41544144 0x41455241 0x00000058
}
  Pixels "pixels-0" RGBA8888 NORMAL 4 2 16 1 {
  0x00115ECA 0x00125ECA 0x00135ECA 0x00145ECA
  0x00115ECA 0x00125ECA 0x00135ECA 0x00145ECA
  0x00215ECA 0x00225ECA 0x00235ECA 0x00245ECA
  0x00215ECA 0x00225ECA 0x00235ECA 0x00245ECA
0x00315ECA 0x00325ECA 0x00335ECA 0x00345ECA
0x00415ECA 0x00425ECA 0x00435ECA 0x00445ECA
0x00515ECA 0x00525ECA 0x00535ECA 0x00545ECA
0x00615ECA 0x00625ECA 0x00635ECA 0x00645ECA
0x00715ECA 0x00725ECA 0x00735ECA 0x00745ECA
0x00815ECA 0x00825ECA 0x00835ECA 0x00845ECA
  }
  }
  }
  }
  }
  }
FileInfo "file_info-0" {
ProjectName "YESPADD.BMP"
UserName "Administrator"
SavedDate "Mon Apr 16 17:51:29 2018"
Originator "GimConv 1.20h"
}
==GIM PS3 RGBA8888 multiple images merged==
It works ! better examples later
C:\Copy of GimConv 01>GimConv.exe NOPADD.BMP YESPADD.BMP -o multiimage.gim -ps3rgba8888 --update_fileinfo on --update_userdata on --merge_mode image
load "NOPADD.BMP"
load "YESPADD.BMP"
import "YESPADD.dat" ( 13 bytes )
save "./multiimage.gim"
C:\Copy of GimConv 01>GimConv.exe NOPADD.BMP YESPADD.BMP -o multiimage.gis -ps3rgba8888 --update_fileinfo on --update_userdata on --merge_mode image -S
load "NOPADD.BMP"
load "YESPADD.BMP"
import "YESPADD.dat" ( 13 bytes )
save "./multiimage.gis"
==GIM PS3 RGBA8888 multiple frames merged==
C:\Copy of GimConv 01>GimConv.exe NOPADD.BMP NOPADD.BMP NOPADD.BMP -o multiframe.gim -ps3rgba8888 --update_fileinfo on --update_userdata on --merge_mode frame
load "NOPADD.BMP"
load "NOPADD.BMP"
load "NOPADD.BMP"
import "NOPADD.dat" ( 12 bytes )
save "./multiframe.gim"
C:\Copy of GimConv 01>GimConv.exe NOPADD.BMP NOPADD.BMP NOPADD.BMP -o multiframe.gis -ps3rgba8888 --update_fileinfo on --update_userdata on --merge_mode frame -S
load "NOPADD.BMP"
load "NOPADD.BMP"
load "NOPADD.BMP"
import "NOPADD.dat" ( 12 bytes )
save "./multiframe.gis"
==TM2 (PS1, PS2, PSP)==
GimConv.exe can convert and create TM2 files, see https://wiki.vg-resource.com/wiki/TIM2 you can get some TM2 samples here: http://www.ps2-home.com/forum/viewtopic.php?f=81&t=1197
The conversion from TM2 to an standard format as PNG or BMP is as easy as this:
{{Keyboard|content=<syntaxhighlight lang="bash">GimConv.exe IGR_BG.TM2 -o IGR_BG.PNG</syntaxhighlight>}}
To create a TM2 mimicking the original settings from other TM2 (for replacing purposes) is not so easy because at the time of convrsion it seems are applyed some of the settings and options of GimConv.cfg
==AVI==
GimConv.exe can import AVI files that was created with compatible codecs (XVID works, IV41 doesnt), you can get a sample.avi here: http://techslides.com/sample-files-for-development
{{Keyboard|content=<syntaxhighlight lang="bash">GimConv.exe sample.avi -o sample.gim</syntaxhighlight>}}
{{Keyboard|content=<syntaxhighlight lang="bash">GimConv.exe sample.avi -o sample.gis -S</syntaxhighlight>}}
==DDS==
See: [[Multimedia Formats and Tools#DDS]]
GimConv.exe can import compatible DDS formats, there are a lot of DDS variants though (DXT based formats are supported, and cubemap 3D textures doesnt seems to be supported). Some of the more complex featurs of GimConv.exe are directly related with DDS... in other words only can be achievd by importing a DDS file that already contains the "features" that are going to be stored in the GIM... alternativelly it looks like is posible to achieve the same goal by building the GIM from other imput formats and using the '''merge_mode''' settings, this is hardcore though and needs some scripts or additionall code to manage GimConv.exe features in a automated way
Some samples here: https://github.com/Jam3/parse-dds/tree/master/test/fixtures
{{Keyboard|content=<syntaxhighlight lang="bash">GimConv.exe test-dxt5.dds -o test-dxt5.gim</syntaxhighlight>}}
{{Keyboard|content=<syntaxhighlight lang="bash">GimConv.exe test-dxt5.dds -o test-dxt5.gis -S</syntaxhighlight>}}
*Notes:
**<strike>Max number of mipmaps = 8 (otherway returns the error '''WARNING : too many image level count %s''')</strike>. This restriction can be bypassed by changing the default setting: '''limit_level_count = 8''' on GimConv.cfg
**Cubemaps not supported


*Links
=GIM format=
**https://msdn.microsoft.com/en-us/library/windows/desktop/bb153349(v=vs.85).aspx
*http://www.pujia8.com/articles/34/
**https://en.wikipedia.org/wiki/S3_Texture_Compression
*https://tieba.baidu.com/p/1733245285
**https://en.wikipedia.org/wiki/Cube_mapping
**http://wiki.polycount.com/wiki/Mip_Mapping
**https://developer.nvidia.com/nvidia-texture-tools-adobe-photoshop
Please note that all contributions to PS3 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS3 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)