VoyForums
[ Show ]
Support VoyForums
[ Shrink ]
VoyForums Announcement: Programming and providing support for this service has been a labor of love since 1997. We are one of the few services online who values our users' privacy, and have never sold your information. We have even fought hard to defend your privacy in legal cases; however, we've done it with almost no financial support -- paying out of pocket to continue providing the service. Due to the issues imposed on us by advertisers, we also stopped hosting most ads on the forums many years ago. We hope you appreciate our efforts.

Show your support by donating any amount. (Note: We are still technically a for-profit company, so your contribution is not tax-deductible.) PayPal Acct: Feedback:

Donate to VoyForums (PayPal):

Login ] [ Contact Forum Admin ] [ Main index ] [ Post a new message ] [ Search | Check update time ]
Subject: g3nolite tutorial by Azywerks (fellow pinoy genius)


Author:
Yolly Zubrick
[ Next Thread | Previous Thread | Next Message | Previous Message ]
Date Posted: 04:35:58 02/02/03 Sun
Author Host/IP: ppp094c.iloilo.net/61.9.84.94

My experience with g3nolite.
----------------------------

Ok! Ok! Ok!
Most information i have herein are gathered from posts of different members of NOKIAFree
specially from g3gg0. Thanx a lot guys.

The rest here is based on self discovery. I may be right, i maybe wrong. As far as im
concerned, this is what i've learned from a couple of hours of playing with g3n0lite.
Please feel free to add anything or make some corrections regarding this topic.

I'm not sure if this could also pass as a g3n0lite tutorial for dummies. :P

Also, please bear with me coz i'm no good with explanations.

----------------------------
by aCe (aZyWeRks)
October 29, 2002
azywerks@eudoramail.com
-----------------------------------

Apps used :

g3n0lite v1.2 by g3gg0
Hex Workshop 3.11 by BPSoft
PPMEdit 1.0A Cracked Edition by TNP (no offense)
Nokia PPM Manager Beta 0.91 by Vanov


Sample Flash :

3310 v5.57 Package F (has the least number of Languages as far as i know).

-----------------------------------

About Menu Structures
---------------------

For the uninitiated, this is what may have looked like a partial dump generated by g3n0lite.
Under language, just type ENGL for english. After clicking Read menustructure, if you don't get
the desired menu names (i.e. Phone book, Messages) you can alternatively tick Menu Description on or off.
I dunno much about it except that for me, sometimes it works with it, sometimes if without it. Just go figure.

[0x00783510] (0x0F) (0x10) (0x0101) [0x001113EE]
# --------------
[0x00000000] [0x00000000] [0x00000000] (0x0175) (0x00DC) (0x0000) (0x000D) (0x0100) (0x0024)
[0x00313ACD] [0x00000000] [0x00000000] (0x0053) (0x02C9) (0x0000) (0x003E) (0x0000) (0x0013) Phone book
[0x00313A67] [0x00000000] [0x00783490] (0x0057) (0x0387) (0x0000) (0x003E) (0x0000) (0x0014) Messages
[0x00783460] (0x0B) (0x80) (0x0101) [0x001113F6]
# --------------
[0x00313A67] [0x00000000] [0x00000000] (0x0175) (0x00DC) (0x0000) (0x000D) (0x0100) (0x0024) Messages
[0x00313BF6] [0x00000000] [0x00000021] (0x0175) (0x05E0) (0x0000) (0x0052) (0x0400) (0x0024) Write messages
[0x00313BBA] [0x00000000] [0x0000001E] (0x0175) (0x05E0) (0x0000) (0x0052) (0x0000) (0x0024) Inbox
[0x00313C17] [0x00000000] [0x0000001D] (0x0175) (0x05E0) (0x0000) (0x0052) (0x0000) (0x0024) Outbox
[0x00313656] [0x00000000] [0x0000008E] (0x0175) (0x05E0) (0x0000) (0x0052) (0x0000) (0x0024) Picture messages

...

For you to better understand this, i suggest that you have at least one instance of g3n0lite running.


Let's start with the topmost data.
----------------------------------
[0x00783510] (0x0F) (0x10) (0x0101) [0x001113EE]

As far as i know, you can ignore everything regarding this data except for (0x0F) and (0x10). It has got do with the number
of root entries and sub entries respectively. This type of struct exists before any (sub) menu is created, kinda like a
menu header.

On (0x0F), it is the number of root entries on your menu. If you are going to add or delete from the root entries,
then change the value of this entry accordingly. If its value is lesser than that of what you've changed, the last
unaccounted entry will be truncated. Conversely, if its higher, your app will generate an error upon writing.
Take note that counting starts with 0.

With (0x10), this is the value if the following entries below it are root entries (1st Level). On the next level menu(2nd),
it'll be 0x80. On the 3nd level, it's 0xC0. I haven't really got the luxury to test all flash files regarding the value of
these entries but in case its different, i think you'll still get the drift.



Next, the root entries.
-----------------------
[0x00000000] [0x00000000] [0x00000000] (0x0175) (0x00DC) (0x0000) (0x000D) (0x0100) (0x0024) [Null]
[0x00313ACD] [0x00000000] [0x00000000] (0x0053) (0x02C9) (0x0000) (0x003E) (0x0000) (0x0013) Phone book

I just ignored the first entry. I don't change it either. I call it a NULL entry. However, when making submenu entries,
it is important that you make an entry such as this before making any other entry. Just clone this or any other submenu
and change its entries accordingly. If used as a first null entry on a submenu, use the value of the first data of its
parent menu entry. See illustration.

...

Since our main concern is from the first visible root entry down to its branches (i.e. Phone book....).
So let us take the Phone book entry into consideration.


Note : I'll try to explain whatever it is that i know of each values presented. Btw, the same structure is used
regardless if it is a root entry or a sub entry. Just some values differ.

[0x00313ACD] -> This is important. This is a particular address in your flash of which the data is the language entry id
of your flash of which in this case is "Phone book."

To be more specific, use a hex editor and open the flash file you are editing, mine is the above mentioned.
0x00313ACD is a location in our flash.
Since our phones start at address 0x00200000, subtracting this value, we get 0x00113ACD.
On our hex editor, we then go to this particular address and we get the following values, 040403.
If we pay attention, the entries around it seem to be ID's each indicated by 04 as the beginning.
But of what?

Using PPM Manager, create a text dump(chunk) of the said flash file. Open the text chunk.
Now back to the value, 040403, just disregard the first byte 04, all we really want is 0403 which
when converted to decimal is equivalent to 1027.
Back to our text chunk, the 1027th entry is "Phone book."


Illustration:

1025 ENGL Silent
1026 ENGL Phone book
1027 ENGL Phone book
1028 ENGL Clock\x0Asettings
1029 ENGL Phone\x0Asecurity
1030 ENGL Off


So it is now safe to assume that this entry points to the text value of this menu. Hence, it is very
important. If you want your menu point to a different entry, just change the value accordingly.

As a tip, if you are planning to add a new menu, try using entry 13 under COMM coz its empty.
Just write your menu text into it. Project-Z pointed it's menu to this entry,
You could also try using a more obscure entry to replace.

[0x00000000] -> I just ignored these values (the second and the third). When making a new menu, all i did was fill
this value with [0x00000000]. For existing ones, I just leave them as is.
As far as i know, g3n0lite will figure out what value to put on these
parts upon writing. Hehehe.

(0x0053) -> I'm not so sure about this but I think this is the bitmap ID. Using PPMEdit, entry 53 on your bitmaps
is actually your phonebook menu animation sequence. On some models though, there is a 1 byte difference
between this value and the bitmap ID. I dunno, maybe its a bug with PPMEdit or I just missed the whole point.

When creating new root menu's, it'll look funny if you don't have a bitmap with it. So if i'm adding one,
i point my bitmaps to one of the existing menu's. Just use the value for this entry and that of the last byte
entry (0x0013) of the menu whose bitmap were going to clone.

Take note that on submenus, the value of this one is either 0x175, 0x12D, etc. Just follow whatever
convention is used on the menu structure you are editing. I think its a lot more safe. I also noticed that
if you make a root menu into a sub menu of one of the entries and you don't change the original value of this
entry (and the rest that matters) the menu animation would actually show on your sub-menu. I dunno if
this would cause any problems coz i haven't fully tested it yet. So far, it worked ok for me.

(0x02C9) -> I've noticed that on sub-menus, the value for this part is usually constant (i.e 0x05E0, 0x0BBA). So when i
make sub menu entries out of other entries, i just changed the values to either one of these.

When making menu's (root or otherwise), and if that entry is going to be a sub menu, then its value must
be 0x0387. And make sure that the next thing that follows it is a sub menu, otherwise you'll have a
buggy menu.


(0x0000) -> Ignored.

(0x003E) -> On making new menu's i just use whatever is common on the flash file i'm editing. Take note that on null
menu's their values are different from that of the rest of the entries. Usually, on making my own submenu
I make all their values uniform except for the NULL one of which I use what is common on that flash.

(0x0000) -> Ignored. I place 0x0000 as entry on my new menu. The rest, i just let it be the same.

(0x0013) -> Don't know how important this one is but i change the values of this one on submenu entries to what is
common. On root menu entry i've created, if i don't use the value of my cloned bitmap to my entry, a
different menu graphic will show. So basically, i cloned an existing root menu and just changed the rest
of the essential values.


There you go.

You can also change the menu tree order by just moving data entries up and down, but i guess everybody knows that. hehehe

[ Next Thread | Previous Thread | Next Message | Previous Message ]


Post a message:
This forum requires an account to post.
[ Create Account ]
[ Login ]
[ Contact Forum Admin ]


Forum timezone: GMT-8
VF Version: 3.00b, ConfDB:
Before posting please read our privacy policy.
VoyForums(tm) is a Free Service from Voyager Info-Systems.
Copyright © 1998-2019 Voyager Info-Systems. All Rights Reserved.