Commit Graph

6 Commits

Author SHA1 Message Date
ml 89c99b50e2 Add screen mirroring, watch input, splash screen, and architecture docs
Mirrors the C64 text screen to the Pebble watch (with game-specific
  umlaut handling), adds a SELECT-triggered key wheel for sending
  navigation input back to the emulator, shows a splash screen on watch
  launch, and documents the resulting end-to-end architecture.
2026-06-21 19:15:19 +02:00
ml 463c85e62f Fix snapshot save/load: route both through CPU trap to sync registers
machine_write_snapshot reads maincpu_regs.pc to record the current
  program counter. When called directly from video_canvas_refresh,
  maincpu_regs is stale — the CPU loop keeps registers as stack-local
  variables and only syncs them to maincpu_regs inside DO_INTERRUPT via
  EXPORT_REGISTERS(). The snapshot therefore recorded the wrong PC.

  On restore (already trap-based), the wrong PC was faithfully written
  back into reg_pc via IMPORT_REGISTERS(), causing the CPU to resume at
  a bad address. The game screen looked correct (memory/VIC/SID state
  all restored) but the CPU never reached the input-polling code, so
  button presses had no effect.

  Fix: route machine_write_snapshot through interrupt_maincpu_trigger_trap
  so DO_INTERRUPT(IK_TRAP) calls EXPORT_REGISTERS() before the trap
  function, capturing the true current PC before the snapshot is written.
2026-06-17 20:50:51 +02:00
ml 755e7758e4 Add hero save editor with D64 format documentation
Pencil button next to each hero disk opens an editor dialog that parses
  the D64 directly, lists all PRG save files in a spinner, and lets the
  user adjust all nine stats (Vitalität, grade, six percentage stats) with
  +/− buttons. Changes to multiple heroes in one session are written back
  together on Save.

  PETSCII decoding now distinguishes unshifted (0x41–0x5A → lowercase) from
  shifted (0xC1–0xDA → uppercase) so names display in natural mixed case
  (e.g. "Mark" instead of "MARK").

  D64 sector layout helpers extracted to class level so createBlankD64 and
  the new editor share the same offset function. Save format documented in
  res/HELD_D64_FORMAT.md. Editor strings localised in EN/DE.
2026-06-14 09:46:17 +02:00
ml 392bbeb996 Rework UI with drawer menu, hero disks, and sound toggle 2026-06-13 14:28:58 +02:00
ml 5a390aa733 Add C64 SID audio output via OpenSL ES with sound toggle 2026-06-13 13:54:41 +02:00
ml 8c7f2e3306 Add VICE C64 emulator integration to Android companion app
Cross-compiles VICE 3.8 headless for ARM64 and x86_64 as part of the
  Android Studio build (Gradle buildVice task + build_vice.sh). The JNI
  bridge (vice_jni.c) renders frames into a shared framebuffer read by
  C64DisplayView, and forwards key events from C64KeyboardView to VICE's
  keyboard matrix. Without ROM files the app shows a placeholder blue
  screen; with ROMs and a .d64 disk image the full C64 emulator runs.
2026-06-04 16:24:14 +02:00