64kramsystem / 64kramsystem/ghidra-vice-connector
Save and restore VICE machine state snapshots (BMP 0x41/0x42)
- Lingua principale
- Python
- Stelle
- 1
- Fork
- 0
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
## Summary
Save the full VICE machine state (RAM, registers, chip state, drive state) to a `.vsf` snapshot file from Ghidra, and restore it later. This enables fast iteration: save state at a specific game screen, freely experiment with breakpoints and memory edits, then restore to retry.
Source: RetroDebugger Timeline Save/Load; VICE BMP `Dump` (0x41) and `Undump` (0x42).
---
## BMP protocol details
**`CMD_DUMP = 0x41`** — save snapshot
Request payload:
```
save_roms (1) — 1 = include ROM contents in snapshot
save_disks (1) — 1 = include disk image contents
filename_len (2 LE)
filename (filename_len bytes, ASCII path accessible to VICE process)
```
Response: standard ACK (error byte = 0 on success).
**`CMD_UNDUMP = 0x42`** — restore snapshot
Request payload:
```
filename_len (2 LE)
filename (filename_len bytes)
```
Response body:
```
pc (2 LE) — PC value after restore
```
After `undump`, the trace state is stale — call `populate_initial_state()` or at minimum `on_stop()` to resync registers and memory.
---
## Implementation plan
### 1. `util.py`
```python
CMD_DUMP = 0x41
CMD_UNDUMP = 0x42
def dump(self, path: str, save_roms: bool = False, save_disks: bool = False):
enc = path.encode('ascii')
payload = struct.pack(' int:
enc = path.encode('ascii')
payload = struct.pack('
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Direzione di ricerca
La issue fornisce i dettagli esatti del protocollo BMP e il piano di implementazione. Inizia leggendo il codice esistente in `src/main/py/src/vice/util.py` e `src/main/py/src/vice/methods.py` per comprendere la struttura dei comandi e la registrazione dei metodi. Implementa le funzioni `dump` e `undump` in `util.py` seguendo il formato di struct packing fornito. Poi aggiungi i metodi `save_snapshot` e `restore_snapshot` in `methods.py`, assicurandoti che chiamino `commands.on_stop()` dopo il ripristino. Esegui il test connettendoti a un’istanza di VICE e verificando che il file snapshot venga creato e ripristinato correttamente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Ambito
- cli, tooling
- Tipo di issue
- Funzionalità
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 70/100