So what about routing?
Many people are interested in creating routable maps and this must be the most asked-for feature for mkgmap.
I've was never really concerned about routable maps in the beginning, both because there wasn't really enough OSM data to do routing except in localised places and because the format was only partially known in openly available information. The situation is a lot different now and I think it should be within reach with a bit of luck.
What needs to be done
If you want to help out, then here is a list of things that need to be done. The truth is though, that it is all blocked on figuring out the extended TRE header. However it should be possible to produce a file that would work in an open source navigation program such as navit that ignores that part of the TRE header.
Extract information from OSM files
Extract and calculate routing information from the OSM data. All projects that do routing with OSM data need to do this to some extent so there is plenty of inspiration. Some people are converting OSM data for use with cGPSMapper, for example the perl script [1] by Liosha.
Implement the NET subfile
This subfile links together the road network. Watch out for a separate post with news on this soon. Or look around in svn...
Implement the NOD subfile.
This contains routing information. There is now quite a lot known about this subfile., I'd think at least enough to implement some routes and see what happens. See for example the libgarmin [2] project although that reads the format rather than writing it. There is also a write up [3] by Robert Vollmert based his own work and information from Alex on the libgarmin project.
There is also code to display the NET and NOD files in the display svn. It doesn't yet fully work with every map, but to produce a map we don't need to understand every aspect of the format.
TRE header versionl with size of 184
The headers in Garmin maps have different versions identified by the size. It appears that you need this version of the header to have routing as without it the map does not even display when there is a NOD section.
This is in fact the sticking point at the moment and it isn't possible to know how long it will take to solve. I've made a little progress towards working out what the values are and that can again be seen in the display svn.
Unknown things
It might be that there are more things that need to be discovered, but we won't know until we try...