Prevue Emulation:Curday.dat and Nxtday.dat
Curday.dat and Nxtday.dat Breakdowns...This is a Work in Progress and will be cleaned up soon...
The header information
AE3365N<ETX><SOH>6NYNNYYNYl<NUL><NUL>0<NUL>DREV 5<NUL>KHHR<NUL>Hawthorne<NUL>250<NUL>91<NUL>130<NUL>1300<NUL>
Settings block:
41 A (BCK in Diagnostics)
45 E (FWD in Diagnostics)
33 3 (Scroll Speed)
33 3 (Number of Text Ads allowed in Diagnostics)
36 6 (Number of Text Ads allowed in Diagnostics)
35 5 (LINE in Diagnostics - # of Lines allowed in Text Ads)
4E N ???(Or GRPH DST Y OR N in Diagnostics)
03 (ETX)
01 (SOH)
36 6 (TZ - TimeZone in Diagnostics)
4E N
59 Y (CONT?)
4E N
4E N
59 Y (CONT?)
59 Y (CONT?)
4E N
59 Y (CONT?)
6C l (VIN in Diagnostics)
00 (NUL)
00 (NUL)
0 <NUL> This is still being checked
DREV 5 <NUL> Hypothesis: This is a Data Revision # - If this is changed the grid is horribly messed up. This probably matches the various versions of Prevue software.
KHHR <NUL> 4 Letter Code for the Airport that Weather Conditions are downloaded for. - Set with I select code
Hawthorne <NUL> Displayed city name for Weather Conditions - Set with I select code
250 <NUL> Julian date from 0 to 255 - resets to 0 on day 256.
91 <NUL> Number of channel listings. Decreasing this in Curday.dat will remove channels from bottom of list. This is automatically built when the channel lineup is sent and data is saved to disk.
130 <NUL> This is still being checked
1300 <NUL> This is still being checked
The general pattern of Channel information for DREV 5:
1 Hex Character - Value is the Julian Day - in our example '['
5 digits for Channel number (string of data - no more than 5 characters)
6 null characters
6 character Source ID (if the Source ID is less than 6 characters, null characters will fill the rest of the space)
1 null character
6 character Call Letters (if the Call Letters are less than 6 characters, null characters will fill the rest of the space)
2 null characters
1 Hex Character 1st Flag of information (None, HiliteSrc, SumbySrc, VideoTagDisable, CAF_PPVSRC, Ditto, AltHiliteSrc, Stereo)
6 Hex character Timeslot Mask (in our example showing 6 ""ÿ"" characters)
6 Hex character Blackout Mask (in our example showing 6 null characters)
1 Hex Character for Flag #2 (still working on what thie one does, possibly flags the channel for Sports and Movie Summaries)
2 Hex Characters for Background Color (colors available are determined by Gradient.ini - in our example ÿÿ)
2 Characters for Brush ID (unknown format yet - possibly string - in our example 00)
2 Null Characters
1 Hex Character for 3rd Flag of information (Grid, MR, DNICHE, DMPLEX, and CF2_DPPV - possibly 3 additional flags as well)
6 Character Source ID again
Then the listings follows after this...
Notes:
The first character (in this case of the untouched listings - '[') is the character that corresponds to the HEX code for the Julian Date. All characters are good and will reset after FF to 00. This character changes daily.
Flag #1
This flag controls the following:
HEX1 | STEREO | ALTHILITESRC | DITTO | CAF_PPVSRC | HEX2 | VIDEO_TAG_DISABLE | SumbySrc | HiliteSrc | None | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | |||||||||
1 | x | 1 | x | |||||||
2 | x | 2 | x | |||||||
3 | x | x | 3 | x | x | |||||
4 | x | 4 | x | |||||||
5 | x | x | 5 | x | x | |||||
6 | x | x | 6 | x | x | |||||
7 | x | x | x | 7 | x | x | x | |||
8 | x | 8 | x | |||||||
9 | x | x | 9 | x | x | |||||
A | x | x | A | x | x | |||||
B | x | x | x | B | x | x | x | |||
C | x | x | C | x | x | |||||
D | x | x | x | D | x | x | x | |||
E | x | x | x | E | x | x | x | |||
F | x | x | x | x | F | x | x | x | x |
Flag 1 is created by using 2 HEX positions and the combination is converted into a single char.
The 1st HEX position controls STEREO/ALTHILITESRC/DITTO/CAF_PPVSRC The 2nd HEX position controls VIDEO_TAG_DISABLE/SumbySrc/HiliteSrc/None
The table above breaks down what each HEX position represents.
IMPORTANT when viewing in a text editor: For channels showing None and Stereo, there is a hidden HEX Code 81 that represents flag 1) - The HEX 81 does not print on-screen and is only visible in a HEX editor.
Timeslot & Blackout Masks
ÿÿÿÿÿÿ<NUL><NUL><NUL><NUL><NUL><NUL>
The first 6 characters are called the Timeslot Mask The last 6 characters are called the Blackout Mask
The Timeslot Mask controls the times that a specific channel is displayed within the grid. In our example listings, you will notice that on channel 95, the listings have both TWC and GOLF listed. You will also notice, that this block is different than all other 24hr/day channels.
How this works is that each char in the block controls a certain daypart, which is a block of 4 hours. The table below shows which character controls each daypart.
Position 1 | 5:00am to 8:59am |
Position 2 | 9:00am to 12:59pm |
Position 3 | 1:00pm to 4:59pm |
Position 4 | 5:00pm to 8:59pm |
Position 5 | 9:00pm to 12:59am |
Position 6 | 1:00am to 4:59am |
For each daypart, there is a char that represents the timing as to when the channel will go into Off Air.
As a recurring theme, you guessed it... It is a HEX code. Here is how it is broken down:
The first HEX position controls the first two hours of the daypart.
The second HEX position controls the last two hours of the daypart.
HEX1 | begin - 30 min | 30 min - 1 hr | 1 hr - 1 hr 30 min | 1 hr 30 - 2 hrs | HEX2 | 2 hrs - 2 hrs 30 min | 2 hrs 30 min - 3 hrs | 3 hrs - 3 hrs 30 min | 3 hrs 30 mins - end | |
---|---|---|---|---|---|---|---|---|---|---|
0 | Off-Air | Off-Air | Off-Air | Off-Air | 0 | Off-Air | Off-Air | Off-Air | Off-Air | |
1 | Off-Air | Off-Air | Off-Air | Listing | 1 | Off-Air | Off-Air | Off-Air | Listing | |
2 | Off-Air | Off-Air | Listing | Off-Air | 2 | Off-Air | Off-Air | Listing | Off-Air | |
3 | Off-Air | Off-Air | Listing | Listing | 3 | Off-Air | Off-Air | Listing | Listing | |
4 | Off-Air | Listing | Off-Air | Off-Air | 4 | Off-Air | Listing | Off-Air | Off-Air | |
5 | Off-Air | Listing | Off-air | Listing | 5 | Off-Air | Listing | Off-air | Listing | |
6 | Off-Air | Listing | Listing | Off-Air | 6 | Off-Air | Listing | Listing | Off-Air | |
7 | Off-Air | Listing | Listing | Listing | 7 | Off-Air | Listing | Listing | Listing | |
8 | Listing | Off-Air | Off-Air | Off-Air | 8 | Listing | Off-Air | Off-Air | Off-Air | |
9 | Listing | Off-Air | Off-Air | Listing | 9 | Listing | Off-Air | Off-Air | Listing | |
A | Listing | Off-Air | Listing | Off-Air | A | Listing | Off-Air | Listing | Off-Air | |
B | Listing | Off-Air | Listing | Listing | B | Listing | Off-Air | Listing | Listing | |
C | Listing | Listing | Off-Air | Off-Air | C | Listing | Listing | Off-Air | Off-Air | |
D | Listing | Listing | Off-Air | Listing | D | Listing | Listing | Off-Air | Listing | |
E | Listing | Listing | Listing | Off-Air | E | Listing | Listing | Listing | Off-Air | |
F | Listing | Listing | Listing | Listing | F | Listing | Listing | Listing | Listing |
The Blackout Mask works the same way, instead this time it will remove the listing or list Blacked-Out.
Note: Every entry has both a Timeslot Mask and a Blackout Mask. Most 24 hour channels will have all 0xFF for the timeslot mask and all <NUL> for the Blackout Mask.
Flag #2
(Hex character 09 must be changed in a Hex editor only) 0-10, 11-20, 21-30, 31-40, 41-50, 51-60,61-70, 71-80, 81-90, 91-100, 101-110
Color Flags:
flag1 = 0x%02X, flag2 = 0x%04X, BgColor = 0x%02X, FgColor = 0x%02X, BrushId = %s ‚ ÿ ÿ 00<nul><nul>
HEX 03 Yellow HEX03 Yellow
HEX 06 Gray HEX anything else is white
Colors are determined in Gradient.ini file - any color listed can be used for background...
Foreground Text is either Yellow (HEX03) or White (any other HEX value)
Flag #3
This flag controls the MR , Grid, and DMPLEX, DNICHE, CF2_DPPV.
HEX1 | (reserved) | (reserved) | (reserved) | CF2_DPPV | HEX2 | DMPLEX | DNICHE | MR | Grid | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | |||||||||
1 | x | 1 | x | |||||||
2 | x | 2 | x | |||||||
3 | x | x | 3 | x | x | |||||
4 | x | 4 | x | |||||||
5 | x | x | 5 | x | x | |||||
6 | x | x | 6 | x | x | |||||
7 | x | x | x | 7 | x | x | x | |||
8 | x | 8 | x | |||||||
9 | x | x | 9 | x | x | |||||
A | x | x | A | x | x | |||||
B | x | x | x | B | x | x | x | |||
C | x | x | C | x | x | |||||
D | x | x | x | D | x | x | x | |||
E | x | x | x | E | x | x | x | |||
F | x | x | x | x | F | x | x | x | x |
1st HEX Char = CF2_DPPV
2nd HEX Char = DMPLEX / DNICHE / MR / Grid
Last Character before the last Source ID- Flag #3
For the Listings Themselves
<NUL> TimeSlot <NUL> Program Flags <NUL> Program Type <NUL> Movie Category <NUL> unknown type <NUL>
TimeSlot - between 0 and 49
Program Flags - in decimal form 0 to 255
Program Type - 1 for Movie, 5 for Sports, 19 for Children, 22 for News, 34 for General, etc. This is in decimal form
Movie Category (1 for Adult, 4-Comedy, 5, 7, 10-Musical 18(SciFi?), etc) This is in decimal form
unknown type: Last number appears to be 0 only, still trying to determine - could be carry over to Win NT Guide