I will just post the info here, so everyone can get to it easy:
First it helps to know about the WAV file format. Here are some good docs.
If you read through those.
Then here are the offsets.
First skip the first 8 bytes.
Then read the next 4. Make sure they are "WAVE". Then read the next 4 bytes. Check to see if they are "ALCH". If not, read the next 4 bytes and skip that many more. (eg if the 4 bytes said 16 then you would skip 16 more bytes).
Keep doing this till you come to one that *does* give you "ALCH" (this is the "chunk" ID btw).
One you have located the ALCH chunk, the offsets are as follows.
Offset 0 Chunk ID - should *ALWAYS* be "ALCH"
Offset 4 Chunk Size - From what I can tell, should always be 100. (probably a carry over from Alchemy)
Offset 8-36 Unknown - There appears to be nothing here.
Offset 37 Internal/External. - I *believe* this signals whether it was an internal vs. external call. Haven't checked. this.
Offset 38-39 Unknown
Offset 40-71 (32 bytes) Caller ID - This is the caller ID information.
Offset 72-103 (32 bytes) Displayed Call Info - this is the information that was displayed when the call came to the user. Eg - if it was transfered, etc.
Offset 104-108 (4 bytes) Call time - This is the time offset (in seconds) to be added to the "magic" time to get the real date/time of the voice message.
That's It! Fairly easy to decode. There are a few things there that I am not sure on. I'm sure that there are flags for the different priorities etc, but I haven't had the time to finish reverse engineering it.
HTH somebody. It took me about 2 days to get that much.
Oh. The magic date seems to be: #12/31/1900 5:00:00 PM# Or there abouts. It seems to take into accound daylight savings etc, so I'm not sure on the exact magic date/time. (I'm MST and that seems to be right).
Anyways. If you have questions, let me know.