Difference between revisions of "GMA87"

From Software Archive
Jump to navigation Jump to search
Line 1: Line 1:
Descriptions needs to be done.
+
==== Description ====
 +
On Track 38 look for code 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 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 0 bits: 01001111 -> 4F
  
 
[[File:GMA87.png|thumb|none]]
 
[[File:GMA87.png|thumb|none]]

Revision as of 02:50, 21 September 2022

Description

On Track 38 look for code 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 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 0 bits: 01001111 -> 4F
GMA87.png

Pages that refer to this protection