GMA87

From Software Archive
Jump to navigation Jump to search

Description

On Track 38 look for signature of raw bytes after a sync: 69 XX XX XX A9

Should occur only once per track.

Logic

Starting from next sync 10 sync lengths are determined by counting on X register.

The next sync length is not evaluated.

The second sync length is used as reference length.

The following 8 sync lengths are compared to the second sync length
if a sync length is longer than the second length a 1 is shifted in a byte
if a sync length is shorter than the second length a 0 is shifted in a byte.

GMA uses a single byte as EOR decode code that is determined on the basis of sync length on track 38.

Example from Exolon

We know that the GMA byte decode code is 4F -> 01001111

On Track 38 we see in G64Conv text format of the track:

First the signature bytes:

sync 42
  ; Following raw bytes:  69 57 57 a9 a9 55 55 55 55 55 55 55 55 55 55 aa ff

Then the following syncs appear (raw bytes after syncs omitted):

  sync 39
  sync 87   <- This is the reference sync length
  sync 40   <- This is shorter -> 0
  sync 136  <- This is longer -> 1
  sync 40   <- This is shorter -> 0
  sync 40   <- This is shorter -> 0
  sync 136  <- This is longer -> 1
  sync 136  <- This is longer -> 1
  sync 136  <- This is longer -> 1
  sync 136  <- This is longer -> 1
  result of 8 bits after shift: 01001111 -> 4F
GMA87.png

Pages that refer to this protection