Flash Traffic Coding Puzzle

I am studying the data files for an old interactive movie named Flash Traffic: City of Angels. It is the purest I-movie I have encountered to date (and I’ve been exposed to more than the ordinary gamer due to my unhealthy interest in multimedia technology): It plays a movie and then presents the user with 3 clickable options. There aren’t even any extra side puzzles.

Flash Traffic: City of Angels -- screenshot

This game seems to consist of BFI multimedia files along with CVN files (ConVersatioN?). We know the BFI format. I am trying to sort out the CVN format. It seems straightforward at first with text strings paired with numbers that lead to BFI files with the same number. However, there is something unique about the text coding format. Observe:

   20 6C 61 62  20 64 6F 77  6E 74 6F 77  6E 20 61 74   lab downtown at
   20 6D 69 64  41 91 09 74  2C 20 74 68  65 79 20 67   midA..t, they g
   41 56 13 6E  74 6F 20 61  20 73 65 72  69 6F 75 73  AV.nto a serious

The start of the second line should have “midnight”. Somehow, the 4 letters n, i, g, and h get replaced with only 3 bytes 0x41, 0x91, and 0x09. Similarly, on the third line, the characters o, t, space, and i are substituted by 3 apparently unrelated bytes. One theory I have is that perhaps this forms an index into a dictionary in the header of the CVN file, except that I can’t find any of the characters in question at the start of the file either. And that would be a fairly useless compression algorithm. These substitutions often begin with ‘A’.

If you are interested in studying the format and solving the puzzle (and I know you are), here’s a sample file: 4001.CVN, which is where the snippet above comes from.

6 thoughts on “Flash Traffic Coding Puzzle

  1. Bobby Bingham

    It’s a dictionary based compression scheme. You have the ‘A’, followed by an offset byte, and another byte I haven’t yet figured out. The offset byte tells how many characters backwards to look. You then replace the 3 byte sequence starting with ‘A’ with the 4 bytes beginning offset bytes before the ‘A’, taken from the already decoded output.

    There seem to be some similar sequences beginning with different characters, especially ‘@’. I expect these are similar. Maybe they indicate a different number of bytes to be referenced.

    I haven’t figured out how to distinguish between one of these sequences and a literal ‘A’. Maybe the unknown byte following the offset has soemthing to do with it, or maybe there’s something in the file header.

  2. Multimedia Mike Post author

    I just noticed the same thing, thanks to the repetition of ‘ bee’ at the start of the text (“Where have you been? I’ve been beeping you all night!”). ‘@’, ‘A’, and ‘B’ (0x40, 0x41, and 0x42) all seem to serve as dictionary markers.

  3. Multimedia Mike Post author

    I thought to examine the BFI format spec. I think this scheme might be similar to their graphical scheme (at least with the back chain; the skip chain and fill chain opcodes wouldn’t make much sense).

  4. Multimedia Mike Post author

    I think I have figured out the second number for the ‘A’ code: distance to the next dictionary code. That helps solve the mystery of how the decoder distinguishes between A opcodes and normal A characters that occur in the text.

  5. AD

    Is Tsunami the same comapany that made “Silent Steel” ? Because the gameplay sounds pretty much the same. It was entirely video and had similar style choices to make.

    Also, Star Trek: Borg was an interesting twist on the “interactive movie.”

Comments are closed.