I just found this thread, Wow! great work on hunting down the color values!!! Simply outstanding!
Hahaha the QWERTY keyboard, and not enough space for the last few letters... Hahah been there done that! I tried that about a year ago. I thought I struck gold, till I ran out of space for the last few letters in the row, and no way to expand the OSK :( I shared the code with JIT, but we got nowhere on making the OSK larger, and I just stuck with iGQwerty :)
I realize your tweaking is more for changing values in the hex code to alter colors, and not really a way to manipulate iG while it is running. However in your extensive stroll through the hex, have you found a way that you could hook into iG to go directly to a specific zoom level, or report/read what the current zoom level is from iG?
I would like to be able to do this for 2 reasons:
1) A type of slide bar for zoom levels, instead of the constant tapping the screen
2) a way to implement auto zoom based on your GPS speed. Sure this could sorta be done using the up/down arrows, but it can get easily out of sync not knowing the current zoom level, or when restarting iGuidance ect.
Lastly, has anyone tried these hex changes with iG4? Hopefully the core of the iG.exe has remained the same, and most of the changes have been to the dialogs and such.
Glad I could help with the color values. I don't have any info on getting or setting the current zoom level though.
The color values are probably editable in iG4 as well, but the offsets are virtually guaranteed to be different. I don't have iG4, so I can't help you on that one, but anyone who has both iG3 and iG4 could probably map out the locations for iG4 if they are similar.
It would be a process like this:
1) Go to the desired offset in iG3.
2) Write down the hex values from shortly before the desired offset to shortly after.
3) Search for those hex values in iG4.
4) Change the iG4 value to the desired color, then test to see if it worked.
One thing I got tired of was the fact that the map data had to be located in the "C:\iNav iGuiance\". So I changed the path at 0xD5560 from "iNav iGuidance" to "progra~1\iNav\\", then moved the map files to "C:\Program Files\iNav\". I can't stand messy root directories.
If you want to read or alter dynamic values from iGuidance, then it may be easier to attack it like video game hacking. With enough searching, you can probably find memory locations that point to state tables in a reliable and repeatable way.
But if you really take it that far, you'd almost be better off writing a whole new front-end for MapPoint using the provided SDK.
Hi, everyone. Lately I installed IG4 on my PPC and it works fine except the some setting I have to redo it every time I turn the power on. I wonder how I save the comport and baud rate, distance units and the timezone. I did try the theme.ini method but it does not work. Do I have to use the regedit to twist the setting on iguidance.exe file? I am not the programmer and do not know how to. If someone provides me the solution, I would greatly appreciate. Thanks
PPC is off topic here :), but you could try to set your settings, and then EXIT iGuidance. It saves settings upon EXIT. Go to File > Exit to EXIT the PPC version. The (X) in the top-right corner of the screen only minimizes the window - it doesn't exit the program.
Regarding the night day color changes:
For those that want WHITE during night, and plain BLACK during day, use:Quote:
4) Daytime Street Name Color.
I assume that most people reading this have used, or at least seen Purdoom's find regarding the nighttime street name color. Again with the hex-editor, finding the only block containing "A0 FF A0 00" and you end up at offset "0x8412D".
So, like many people, you want it to be white, so you change it to "FF FF FF 00", but now your daytime street name color is this horrid purple. Well, look just a few characters back, at "0x84126" where you see "60 00 5F FF".
This is a bit more complex. It seems that the nighttime street-name color is always set from 0x8412D. But the daytime street-name color is set by adding the 0x84126 and 0x8412D together.
So.. When you change the nighttime color to "FF FF FF 00", you get:
FF FF FF 00
+ 60 00 50 FF
= 60 00 5E FF
Keep in mind that RGB values are usually stored as RGBA (alpha). I don't quite understand how iG3 uses that "A" value yet.
So what's the practical application of this?
Say we want a "White" night text, but a "Red" day text.
Find the block that contains "60 00 5F FF 50 81 C1 A0 FF A0 00", and change it to "FF 00 01 FF 50 81 C1 FF FF FF 00".
"FF 00 01 FF" + "FF FF FF 00" = "FF 00 00 FF" or R(255)-G(0)-B(0)-A(FF).
Do not mess with the characters in the middle: "50 81 C1". That's the assembly code that is pushing the variables on the stack and adding the two color values together.
If anyone has any ideas about how the day/night switch is made for these values, please let me know. IE: Why does the color addition only happen for the day street-names, when the assembly code doesn't appear to take that difference into account.
Find the block that contains "60 00 5F FF 50 81 C1 A0 FF A0 00", and change it to "01 01 01 FF 50 81 C1 FF FF FF 00".
Seems to me all these HEX locations are based on v3, right? I tried v4 and all is located in a different place... ugh! Very hard to make changes now :(