AVRで日付計算?

ネトゲのゲーム内時計を置き時計(ソフトではなくリアル)にしてみたいと思い立って数ヶ月。
NTPや基準情報サーバとの通信に必要なEthernetに関しては、SPIで通信できる専用ボード(ちゃんとMACアドレス付き)が出ているそうなので、自分でIPパケットを書けばなんとかなりそう。
 
しかし、新たなハードルが。
時間の流れが異なるゲーム内時間の計算に「基準日時からの経過秒(可能ならms単位)」が必要なんだけど、これをどう計算すればいいんだろう?
一般的なリアルタイムクロックモジュールは年月日時分秒を個別に取得することは出来るけど、1900/01/01 00:00:00からの経過秒を取得するなんて実装されてない。
結局、何年何月何日何時何分何秒という6つの数字から秒数を計算しないといけないって話。
 
PC上では言語が日付演算関数を持ってたから、必要なパラメータを突っ込めば自動的に秒数が返ってきていた。WinAVRではこれに相当する関数が見つけられない。つまり自分で実装しなきゃならんって訳だ。なんという車輪の再発明
 
 
しかし、ちょっと考え方を変えてみると意外と簡単に解決できそうな気がしてきた。
この時計に必要なのは、1900/01/01 00:00:00からの秒数ではなく、基準時刻と現在時刻の差分だから、それほど大規模な関数を書く必要はないようだ。
というのも、そのネトゲは毎週1回サーバメンテが入り、そのたびにゲーム内時刻が変わる(おそらくメンテ中は凍結されている)ことから、基準時間と現在時刻がおよそ1週間以上離れることは無い。
つまり、せいぜい月毎の日数と閏だけ考慮していればいいという事になり、これは実装上とても有利になる。複数の年・月をまたぐ事はないから、単純な分岐だけで計算できるって事だ(複数の年・月をまたぐ場合は、基準時刻か現在時刻がエラーだと見なしていい)。
日付の差(日数=直接秒に換算可能)が求まれば、あとは時分秒(例外はほぼ無い)を力業で演算すればいいからね。
 
 
よしよし。
脳内理論上では概ねイメージが出来てきた。最後のハードルはIPパケットの送受信ロジックだが・・・。いや、その前にハードだけで1万円以上のコストがかかるのをなんとかするべきかwww