# 14 — `.gb1`–`.gb9` Auto-Backup Recovery

If forensic access to the **original developer's machine** (or a backup drive / disk image) is possible, this is the fastest, lossless path. Bypasses all decryption and decompilation.

## Auto-backup rotation (GameMaker 4.x – 8.1)

When the developer saves in the IDE, the existing `.gmd` is **not** overwritten. Instead, the IDE shifts files in a chronological array:

```
new save     → working.gmd
working.gmd  → working.gb1   (most recent backup)
working.gb1  → working.gb2
...
working.gb8  → working.gb9   (oldest kept)
working.gb9  → discarded
```

Maximum depth is configurable in IDE General preferences (default ≤ 9).

## What `.gb1` actually is

> **Byte-for-byte identical to the `.gmd`.** Not compressed, not differential, not delta-encoded.

Just the previous save's full `.gmd` with a different extension. Same binary layout described in [03-gmd-format](03-gmd-format.md).

## Restoration procedure

1. Run forensic file-carving on candidate disks / images. Look for `.gb1`, `.gb2`, ..., `.gb9` extensions.
2. Confirm file size > 0 bytes. (Zero-byte = catastrophic write-failure during IDE crash → unrecoverable.)
3. Rename `.gb1` → `.gmd`.
4. Open in original 5.3a IDE **or** [LateralGM](11-tool-lateralgm.md).

## Why this beats every decompilation method

| Property | `.gb1` recovery | Decompilation |
|---|---|---|
| Variable names | Preserved exactly | Preserved (5.3a stores plaintext GML) but DnD nodes reconstructed |
| Comments | Preserved | Preserved |
| Code formatting | Preserved | Reconstructed (parser-dependent) |
| Resource IDs | Stable | Stable |
| Cryptography | None to bypass | Always required |
| Risk | Zero | Some (dynamic methods need execution) |

If you have any developer-side disk access at all, **always** look for `.gbN` files first.

## See also

- [03-gmd-format](03-gmd-format.md) — format is identical
- [11-tool-lateralgm](11-tool-lateralgm.md) — opens the renamed file
- [15-extraction-pipeline](15-extraction-pipeline.md) — Rank 1 method
