# Phase 1 Test-Anleitung

## Files
- `dist/mpeg1dec.dll` (310 KB) — die DLL
- `register.sh` — Script für Registrierung
- `unregister.sh` — Script für Aufhebung

## Auf CachyOS:

### 1. DLL ins Wine-Prefix kopieren
```bash
# In Steam-Prefix für Omikron
WINEPREFIX="$HOME/.local/share/Steam/steamapps/compatdata/1207659190/pfx"
cp /pfad/zu/dist/mpeg1dec.dll "$WINEPREFIX/drive_c/windows/system32/"
```

### 2. DLL registrieren
```bash
WINEPREFIX="$HOME/.local/share/Steam/steamapps/compatdata/1207659190/pfx"
wine regsvr32 "$WINEPREFIX/drive_c/windows/system32/mpeg1dec.dll"
# Erwartet: "Successfully registered"
```

### 3. Prüfen ob Registry-Eintrag da ist
```bash
wine reg query "HKCU\Software\Classes\CLSID\{e436ebb5-524f-11ce-9f53-0020af0ba770}" /s
# Erwartet: zeigt auf unsere DLL
```

### 4. Spiel starten und Logs checken
```bash
cd "$HOME/.local/share/Steam/steamapps/common/Omikron"
PROTON_LOG_DIR=/tmp/proton-logs ./Runtime.exe
# Oder via Steam normal starten
```

### 5. Logs prüfen
Im Wine-Log (in `steam-XXX.log`) solltest du sehen:
```
[mpeg1dec] === mpeg1dec DLL loaded, phase 1 (stub) ===
[mpeg1dec] DllGetClassObject(rclsid=E436EBB5-...)
[mpeg1dec]   → ClassFactory created at 0x...
[mpeg1dec] CF_CreateInstance(outer=0x0, riid=...)
[mpeg1dec]   Filter created at 0x...
[mpeg1dec] QueryInterface(riid=...)
[mpeg1dec] IFileSourceFilter::Load(filename='FLIS\EIDOS.mpg', ...)
```

Wenn **DllGetClassObject** aufgerufen wird, hat der Hook geklappt!

## Erwartetes Verhalten in Phase 1

- DLL wird geladen ✓
- DllGetClassObject wird aufgerufen wenn Quartz nach dem MPEG1-Splitter sucht ✓
- Filter-Objekt wird erstellt ✓
- IFileSourceFilter::Load wird mit "FLIS\EIDOS.mpg" aufgerufen ✓
- ABER: Quartz versucht noch andere Interfaces aufzurufen (IBaseFilter, IPin, ...)
  und kriegt E_NOINTERFACE. Möglicherweise crasht das Spiel oder spielt
  einfach kein Video ab (was OK ist für Phase 1 — wir wollen nur wissen,
  ob Wine unsere DLL findet).