GMA87

From Software Archive
Revision as of 02:54, 21 September 2022 by Enigma (talk | contribs)
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