64kramsystem / 64kramsystem/ghidra-vice-connector

Joystick input simulation via BMP (0xa2)

Offen Anfängerfreundlich
#29 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
priority: low
Vorherrschende Sprache
Python
Sterne
1
Forks
0
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

## Summary

Set joystick port values programmatically from Ghidra to simulate player input. Useful for advancing a game to a specific state (navigating menus, triggering game events, reaching a level) to set up the state you want to analyse.

---

## BMP protocol details

**Command:** `CMD_JOYPORT_SET = 0xA2`

Request payload:
```
port_id (2 LE) — 0 = port 1 (CIA2 $DD00 bits 6-7 + CIA1 $DC00), 1 = port 2
value (1) — joystick bits: bit0=up, bit1=down, bit2=left, bit3=right, bit4=fire
(active low in hardware, but BMP takes active-high: 1=pressed)
```

Response: standard ACK.

To release all directions after sending input, send a follow-up with `value=0`.

---

## Implementation plan

### 1. `util.py`

```python
CMD_JOYPORT_SET = 0xA2

JOY_UP = 0x01
JOY_DOWN = 0x02
JOY_LEFT = 0x04
JOY_RIGHT = 0x08
JOY_FIRE = 0x10

def joyport_set(self, port: int, value: int):
"""Set joystick state. port: 0=port1, 1=port2. value: OR of JOY_* constants."""
self._command(CMD_JOYPORT_SET, struct.pack('

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Das Issue gibt die genau zu ändernden Dateien an: `src/main/py/src/vice/util.py` und `src/main/py/src/vice/methods.py`. Lesen Sie zunächst den vorhandenen Code in diesen Dateien, um die Struktur zu verstehen. Implementieren Sie die Konstanten und die Funktion `joyport_set` in `util.py` wie gezeigt. Fügen Sie anschließend die Methoden `joystick_press` und `joystick_release` zu `methods.py` hinzu und stellen Sie sicher, dass sie in die vorhandene `REGISTRY` integriert werden. Testen Sie, indem Sie das Ghidra-Plugin ausführen und überprüfen, dass die neuen Befehle erscheinen und aufgerufen werden können.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Bereich
cli, tooling
Issue-Typ
Feature
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
75/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.