Hi, Wolf
For starters, kudos for your work and to Alberth for the suggestions.
Now, I had a go at a daylength patch myself a while ago (unpublished) which I abandoded. It followed the classic approach of changing DAY_TICKS =70 to a variable, which I later realized is wrong, due to reasons anyone can find by searching older threads with abandoned daylength patches.
Anyhow, your approach seems simpler and more elegant so I'd like to help. Here are some thoughts:
Why do we need daylength? Well, as we can scale the x and y of the map using maps larger than the original 256*256, daylength offers us the possibility to scale
time. But, like in scaling size, daylength affects gameplay in several ways. For example, in scaling size, industry production changes
have to occur more often in larger maps, which has been very well implemented in the game. However, the gameplay is still different in larger maps, in that a player can make much more money due to vehicles travelling much longer distances. It is also easier to get a max rating of 1000 in larger maps as you can get 80 stations and 120 vehicles no prob. Thus, in a large map, you get similar feel as you do in smaller ones, but also different in some ways.
Now daylength is desired by people for two reasons:
1) Be able to play longer before vehicles get outdated etc, a.k.a build steam train empire on 1024X1024 map without getting RSI, if at all possible. This one is the most common.
2) Be able to provide same services with
less vehicles. This requires
adjusting production inversely proportional to the daylength factor. For example, service a coal mine that produces 400 tonnes of coal/month with a couple of trucks with a carrying capacity of 20. Although this sounds realistic IRL, it is hardly the case in-game, even if the industries are next to each other. This one is less common, but myself (and I believe other people) would to love this in order to play detailed heightmaps of smaller geographical areas without over-congesting them with vehicles. Imagine a single train connect two towns 100+ tiles apart adequately, while going through a long, scenic route, mainlines that don't have to be 8-tracks-wide, no more junctions that are larger than towns etc.
In both cases, you
do have to adjust the economy somehow, otherwise a player gets
daylength_factor times the money they would normaly make in a game year (not true for the second case, but anyhow). Can this be done somehow with your apporach? I believe yes. Other things are also affected by daylength, such as servicing intervals, vehicle reliability drop (each day), station rating drop, and others. If all of these can be covered by your approach I am all for it to drop in and give a hand. I do have some basic C++ skills (nothing close to production level, but I understand how the laguage works, can compile and have done my own projects in the past).
If I understand correctly, you consider the original game date as internal_date and your "fake" date as the GUI date exposed to the player. This solves a number of problems I encountered during my attempt, in that you don't have to touch many things to begin with. I would suggest renaming the original game variables _date, date_fract etc to something else such as internal_date, internal_date_fract etc, and specifying a naming convention for your "exposed" date system so that you make sure only your own are indeed exposed (not only in gui, but also to NEWGRF and such).
I know it can get confusing but keep it up. This is something many, many people want in trunk and maybe this time
is the time

!
NOTE: I know you don't want to touch the economy at all, and that is perfectly fine, and consistent with the principle of keeping patches small. My thoughts above are more in the direction of "once this is working, can we then expand it to cover economy adjustments and other related stuff?"
Now, please let me know if I can help with something.
Citizens Celebrate! First train arrives in <insert your favourite town/station name here>!