motoskin v1.10 00000e14 Motorola resource file format 1.10 Brought to you by Beijing Motorola. Nimen Hao! Motorola is not liable for any damage resulting use of the information below. We nerdy engineers (and groovy UI designers) would love for you to create luscious skins for our humble phones. To help you, there is enough info below for a C or C++ programmer to write tools to read and write these resource files. Good luck! The first 24 bytes must match the following format: motoskin\n\nv1.10\nXXXXXXXX replace the Xs above with an 8-byte hex offset of the start block. Between this header and the start block is a \n-terminated list of resource IDs used by the hash table. IDs for images end in .g, and IDs for sounds end in .a struct startBlock { unsigned check; // 0xABCDDCBA unsigned IDTableOffset; unsigned nHashTableEntries; unsigned hashTableOffset; unsigned dataOffset; }; struct hashTableEntry { unsigned hashedID; unsigned IDOffset; unsigned x; unsigned y; unsigned width; unsigned height; }; Note: the start block and first entry of the hash table MUST be aligned on a 4-byte boundary. If they aren't we don't load the file. hashing function: (taken from usenet--thanks David Hanley!) int hashVal(char *c) { int hv=0; while (*c) { hv=(hv<<1)^(hv>>20)^*(c++); } return hv; } After the hash table is the binary resource data. The first four bytes are check bytes and should be 0xDCBAABCD. The next four bytes are the size of the data, not inclusive of the four bytes. The rest is the data. ID table: Call_Keypad_KeyBk Call_Keypad_KeyBk_A Cut_Menu_Seperator Cut_Screen_TitleBackground General_Arrow_Down General_Arrow_Down_A General_Arrow_Left General_Arrow_Left_A General_Arrow_Right General_Arrow_Right_A General_Arrow_Up General_Arrow_Up_A General_Check_Box_Unselected General_Check_Box_Unselected_A General_Radio_Button_Selected General_Radio_Button_Selected_A General_Radio_Button_Unselected General_Radio_Button_Unselected_A General_Select_Box_Selected General_Select_Box_Selected_A General_Stretch_Button_S General_Stretch_Button_S_A Sbar_Background Stretch_CST Stretch_CST_A Stretch_CST_D Stretch_ComboBox_Border Stretch_ComboBox_Button Stretch_ComboBox_Button_A Stretch_ComboBox_Button_D Stretch_Dialog_BottomBorder Stretch_Dialog_CST Stretch_Dialog_CST_A Stretch_Dialog_CST_D Stretch_Dialog_LeftBorder Stretch_Dialog_RightAngle_1 Stretch_Dialog_RightAngle_2 Stretch_Dialog_RightAngle_3 Stretch_Dialog_RightAngle_4 Stretch_Dialog_RightBorder Stretch_Dialog_TitleBackground Stretch_Dialog_TopBorder Stretch_Highlight_TextBackground Stretch_ImageBorder_Bottomright Stretch_ImageBorder_Topleft Stretch_Menu_Background Stretch_Menu_BottomBorder Stretch_Menu_LeftBorder Stretch_Menu_RightAngle_1 Stretch_Menu_RightAngle_2 Stretch_Menu_RightAngle_3 Stretch_Menu_RightAngle_4 Stretch_Menu_RightBorder Stretch_Menu_TopBorder Stretch_ProgressBar_Background Stretch_ProgressBar_Background_Small Stretch_ProgressBar_Fillamount Stretch_ProgressBar_Fillamount_D Stretch_ProgressBar_Fillamount_Small Stretch_ScrollbarH_Arrow_Down Stretch_ScrollbarH_Arrow_Down_A Stretch_ScrollbarH_Arrow_Down_D Stretch_ScrollbarH_Arrow_Up Stretch_ScrollbarH_Arrow_Up_A Stretch_ScrollbarH_Arrow_Up_D Stretch_ScrollbarH_Background Stretch_ScrollbarH_Foreground Stretch_ScrollbarV_Arrow_Down Stretch_ScrollbarV_Arrow_Down_A Stretch_ScrollbarV_Arrow_Down_D Stretch_ScrollbarV_Arrow_Up Stretch_ScrollbarV_Arrow_Up_A Stretch_ScrollbarV_Arrow_Up_D Stretch_ScrollbarV_Background Stretch_ScrollbarV_Foreground ͫWd(@N>B.~?Cv@*yE|R>?@lH5~ Z?CB>`**d>y-/FB>BA |cn+ _>~?Ͳ>8V"4TcT39#3V"8o"[?g?؈>`T*Gh ch +T X}j! LN T T6``~ ˮOyB>'gQ.?eS|qN ˮ,0bFo#H*|V |S|-50 g8o#к&6 eN lxw *p^&n$ >B7kTY9#clL*e%2dlef,V#5`"/`?xC>n,9r|30 |T |_ |_' |T' Xq>x! ēK~' Yn E|<F>PͫH@PNG  IHDR0} pHYs  gAMA|Q cHRMz%u0`:o_F?IDATxb?O3PJK3#LFFF7.q (:ڨbQEUPd3F cĉ ߿'ːϞ1L4 C̙3d׮cwg@DK!\\X+vwg@D߿es>330yx2ǏXŇ;3 ZE^...Pq`H44ᘙpV%dɁ#2;1 DvW(|1q1,m#؎D?ÝRITcih-P{ 7nND"""(>4Ύ"&$$a&({E;r'zB&s'zB&|i%Bi J@BB<Â ./>'''( JL]i66v!((Ubĉϝ1 @1!p`@ LP$L=GW  50l,8p.9|$LVVhh턟?~#xxx8''>FO331ps00m&H-'';DmπJ't3@ ϝ䚉^@Djr"r JP[a&L8 ; ٝH`Kȝ<$ >'bB/qE/Q0r$b3azUO?Kįqʔ)fNӈ1q%b"TckNڨ(1f%_}W_ RSϝll` 3m%bAO4!r1 L#L&V̀r'Oddd܍n6>w5(PTL# DsMbd {ӧxJo(b wk$Nl~NP}4l&6033D@,md~cˑM͝gϞ;Iq ׯ_s" G`s8BYҼGgY= *wrpD@Lf r̅HXKohV|yL#w+ . k'LT7ss8b2kmӌ@{>'*ȑ#~^ F=1{"'껓؆0#j)p%L&JaPO¿r SD'"]܉]ŝrrr|bO  ="}w#0 f0ͪUhX 5°`{!3ONl dmCNj @6V\h h 2" [{ D+OB)>3aj!>;tn]eXFN|f&X-#jm6K, Dk?l5JITԓjq'Bw'%w>3OH/#1=!hz"-aj_~c!6UԒƿi OIp'22@nɓN\f܎&{ .7h?:'Bަ N4HjOn&j/6 a܌/L\Sg g@D{:tʉ jOH) ({X܉<r+nĻʑ }O۶o)G~"%%%ru'>wa^qMB) oa֐f8yahNX@쾧}O7s؏ kt/57wa5bF !ZZf3Ru dC  pTc%Z}>:?#-F2BՃ"@|~F(f4X |K5 kkkɩ6W@D/:ypGˠPIxl2 Рp ( I,I\` (ŌH`.p]"qD5PoF) +cȅ}FB^Bӏ>P] D`&qLPJCV"VdX&"H}18 G 0P ;<KD \@1CA1LB,c+` c{\:=i@E( %Кtl,-nAJ}H3JDm**RvF ?`%H46#J6 ɈԠaB PpQ PC u;MY9sHP$ A1֧O Ps-; ,_<:(-3^x(I 9YBkdAl$@ >oUsP <~r+trSG=ۈeǴSS,aȳ8)Mk216hX*V-A90;kQLڃ63j[\70r DLÔ+U{OH =2p-mfFxk?t{ό?KܫA.` SX p7#j6>$ /pD" +s%-}zG2JZ@HFszB4B#gEDDpp?j*i#"C ׄ 4U!uYCJU^I42Ж-#8! ث 6fkOff+ieo J)x lc̃ ȡaM4J4~8 s`6&+ "5 4d``z_,' i0#[/ Shrx¬940Ժ]mD@A! )#5VۡHȓŸ'xab8,2J4CptE?04&n ;{ N UMd}K96WE>>>\$0<@[ lT$ Ab drll̨!BiYC>`DjBupD 6C| mHhr1!G.~c\!5La%JfdAAe7U ?oTWJ!q,i; ҖQ@A> % 3ZzMk%zћ萓:a|%@& jd0M4d@f\zˆ9E: ?`/t;)hIbf X܄yOJJbH߱69߿yTE~0uI$F@,v I 9m}| hjy( ڋ|Q@ \`qw0̘1Ν;൵gA AG)++3ddW\LO_Jg```\~ï>>~,f[ MrJJbd? vvLA3 9%33Kh$?ؑZzyU=}}}1f8};t -zc;88920 BAMe30c%a@~F7@$@Tݹr!n=`(mevZ')=)-BfΫjŪ-lmT/J]q(Zka#a H3hn+c{r'VEk(R#ŋ*GR|-a{ߛ?3~D$Kv%^B @,:ZzT&\ 2!6ѠH`?|~7C/48 0ܦyA!zB]kj6ĄmY 6.@R߀~ab`f? h߈ᇭqrq£%ga'GG3"fJ3hB/6pf~`D3CVR[gV^嬬} )AbadL -A=%JFHenjL1"P _t'nG㴲X?x _XO Ρ0$V{[^@233#a[ % ,E8?YG udfv6Wr)gs| \ ia;4ACץFT-,]L`@r_`$ǘؘktAm]r/R#,,GF+Rύ?#_(-D_@n jN ,rXG7<|xgq,ѫ ZOIQ (  +o/,._n \Z`uޒ_I;ϟh//ؾQ@9 kN0 1 Pk/ I]P1Xd5_xAPPX`dV @cxRpqqa8s ۷owp"C DaGn!T 30[)øb1_] X!2D@a\{1`Fgb"pۇ k>P*Db akŨCq%5ܽ3?,8gRJ?5FCO53WD7鄖h?-];ֽR8O!t,P>!I_2 铤آX~^J|7A*w˺ 4R;ujcȎ%ُ4Q?_ 8bE<+ t0V&``Mfa`\?rĎݿ5% x %vbPWE<71!~#t STX U[3jq,e` X@xfЩQ1,9< awcqbaDa_*?"@,, UZ ɿNoQZJ^lsԞ% _7"0BJR_p)@,v2aG*)YA4 ?edAK'XC [6< _0s5@Y* C܌4.^X w+VLmcWq征:`hP#N5Z>'ZWJfC,jdb8yGT82ӆ?  h w 4+ LZ(\,6Й5b3^@mh#!Lv66W T؀%  `&NVV6?Q02> #|N2g 'gMvWA 4e r/ [do%d3Tat0"FWic5⥫I d&1 ~FV&QW |z(tR=`^@ 0yP!f42ppr;Ef;/]_FJӠN04-y`~ @Ex ;~1$'2| "f&(@8"ti3K#H1s ݩ;J97Xi22/c p 9"e1"" E9"TUU1""իW y9,&ZPe7 $ǡ,!] R=r.Y\B 5Dί_1xƍ =fc044dPRR$۝_axÕ+W={ ++ ~NU=G.7h|6~@LȹT .{ȹT @+?LdwǏ >|d8O>Ͱi&{NЎOP%@P2~%K0\v;ȃ&F@> x jLS=4Б$1 34 :S7t3ߋ/Ο?O;A ^br=J;d=<<"^]@ E.yP$E31 P 9 Zų  3@nFLjAQ8=vred@+Xϡ:d$ {X^.iXP@T312 l- -mB3_PǃX3e@8{."LfK }e 1fs?0=#@[շ yW0uhu.viЃФWE/Q2WX:}ZQӈYM)Q;l0uT}lƈ41=Z hY@(_ *֖,4s+D jKyS3o 83=[f@|UdSxE,B3lS+spI_Ǵ۫eG`L'D)e' gՠIKQ5y?xɸVF.q9lwHd4(`c-%Yxoq 2Y,+_sh[cPM7.dMaڤ}Ƙ]WS1o_eh\grѐpycH,Z1zNRȺ s\ {p}C- Cj_53߭Jt{;{A%XJd 1q1NPP'L[ wNX b?q mYzw#2؉P@ 6k\812:}lP\TBU3Νǐ0R@ Ds-/_J8g x<&&vD&b dfZ`@v\^7ֻm8[Wm>U/^ tU=``oCW9yìY&Ç1|g͚Xptt$hh:1R֋-h&˗gaU,QP`o^`O`XpF eſLDJJ p9 @+D`bb ;s4 f0%4d){l .gx#Y l^z&?3gҿ%dny5 t&;' po#+@UU%8.M}x ~3Jx9!{%顰 =ဎӐM0 wN  hXtA 6CiAN86 hFy&rAD@fZL>}ȇ L(4z( А+infLL 5c$vhݗ 0B x@,C%2@ _Iq1qFZ9@ ȠEČȦ =@&惨 v M4d@f h4ь@; F00$h4 H4Z sNu3#ܻw>UF~jt.,jB9 i[N)ɘ OiYG ^'''۷*j4wjr*GHУt,&\"o&X>t}$*+U&-ߑ LԐ[Io&.#ٷF4@jfM8$V)Tss[p֗ +b,jhlĂ&AL9A^w~P~U<1a @#& *08| S碰o߾(3K@@CO~?hh4|_T18~ATOl,`>&)aMZM4dVqĀߨh4]3fh@62ؕ@F7U+m3'H&! @='Xqu4ܘ@#m%heC6 hp6HLj6N4с46. _4hhs:߈|D@D@)@&oH4Q?H4:DC#nF?߾";QKb5@#.Ѡ/%]L)Fm4@#&4HM8 1%G~)4JX!gM X#8S KyIZ;\bhRFx}7Ą%@<р$l <Eɽ&V߿2f {fA0[d֭_@#= $&L G  4b?5oE&_bXb#bb:=4RfhX^Vf7;b166obb 11۷o3<}a UUUؓ'O@gοr f&~QQQSAw002 |7ׯ̤w{ @4~bs8899Xt(N:^ LxAn&(!HIIXv-BtDdJT!^Nv6XIC l r .*(@@ p.+pqqs-(fԀԖ-[LFOXu }'Hd`/Q؁  4@ T==xD9j@U"(.1H<$uJH" ЈO4f:O,mW&7o7TC*I[04vEBB-@iP rb@d(3a&iKjq<7kٺu+Fݎޛᰰ0-zx7( "eee].86wѠ.˗/'%dY6$U/:d:'!./Hђ-J40*85MnLn_=ۛF777,W"FB$3޽KP wCREǸ+A )486 h`ئ='Β|(6I" ` f^vAEE˗v'D,ޣ4{^@᭞@'ODՀFQr0vG+hhl3/\EܹsD=A`fR Pm’ =ovi@{ωDMJ$gΜ@do Hlr$Xw[[uJnpL#sq "!LĂp HM,F.rEAGO@U3F&#?&HBkv1e`24 mA}(7Ј=VD/GO4K4iXbö 0$-k:;@,7\| 0`6 qЂrкZ+H8@&$gϟ kª#Pb jx޽="t` @`4P|^P];؁`&Vijj׈JP T*@(T ETw-D> ,ھAhwP1\~DA3~abŊb&-=sQYa|<vf¦u0@'%2 jG1 jck?~LhC2 z;P8р %sAՠs@'Î%#JJJ :::jxȀg9N41lO %sA${ɒ% o޼A9v`#Бm.]bPPPX^g9N4Man0C\Plj``K:\tPt8w J:\GƂj]6%\z\G"w^6R  1.Li8w p5J> .6QbĘVN@c;7gR:v`N4QS|VwK= R5ðm'ĚKʩ߁:G X`]H\=@pyys=>s-&1rKM@3~a»4ԝĚK&"z;P0h E?B .7Ѱu0@%% r'S\SI5WL a=s@3)C^ P %eK.Um_A^TmkHkPvvv(ԃb/%xE?&9j j"o#\owU"W?۾֋ <<<pGc.O4|5ͽ>|1nCrJ0%!0RuY_FTsDUwN4_]?K=(05~!ͅ%bkkk yTnKr_N1 % @ hfZy^h(  !_n-hT%]۠5F `@w"?P)G.Z fܹCS;zI @Ǡ5@G[:> { $Oh3 ?~f@|r #aKm3a+hhSP"'ŋi2@4ͅD:a6@ h•h>D%;? F#Iͅ,]w)N$t]X^XN6 ?b: Nr-,f@/ 4F A+qEhHP r-,'z%U uO#M@ iv!-ԻUr-, Fhapwrg@ itљF*ȎXf @xm$u䕤40+{-,G?ۺa-,ǶƘ\331l Fha9= 3$]XN09ZZ@ ˡ h` hta9iv`4F ˇ3хP@r( hta9 hta9EftU"=@PcA5:BmzK  j/Ҟ5kjtetQ9m='VցI4VQ 5s555aaav9*h/* >k׮1\I0  XkhRq  5sa?.K4Pؕ ௯Q03 H X@s.k6!s -&'\BGG@. ɑ`OPJ >̈hXi|(Q"o A'_Z| ћ6m* &d.r/ 4:6t!U;J( d'# [.A{[n1ҷ%LWOZX ĵyA}0&pB"ЎT *@ @% ( cP]|;,Qۿ?eI ;>BD@,O>eF@_ ڮJL%hg Hu/ fah 4%D0rU*vg7>@֑k׮Y @LA$D.8'\b!4o a7cp3\@ ՅTlT8* ԾUon0bߤb'r%z"\b'PăR7ԏ3A X@ RQ!vTs]hN.4,ئXarA4v 8}4ȫmll.E\úrAb.˗vǏ=(P䃺! Aa&yƵh܈ZЍ|v>sa*A+f.l t0) -݄ Ng`lT:JW-4Jܭ[@;ߐ2wuu*9@ a ( { 0^&@,-PLm0̅ݻw˃},J95 @UGTbb}P3bQp2| ߂jr&`CQ@< Ƒt( 0sjgIENDB`