You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 70a971b
Browse filesBrowse the repository at this point in the historyBrowse files
* feat(v1.9.9): "Workshop" — iOS creator/power tools + final readiness gate
The last iOS TestFlight release before v2.0.0 "Timebase". Brings the desktop
creator/power-tools to touch and runs a full pre-freeze readiness pass
(host-gate verification, security audit, gap analysis, completeness-critic).
Additive / off-by-default: the bridge gains only forwarding fns over existing
rustynes-core APIs, the deterministic core / chip crates are untouched, the
shipped / native / no_std / wasm core stays byte-identical, and AccuracyCoin
holds 100% (139/139).
Creator tools:
- Cheats: Game Genie editor (persistent) + raw-RAM peek/poke ($0000-$1FFF).
- Read-only debugger inspector (FOSS/TestFlight build only, gated off the
App-Store channel per ADR 0027): CPU regs, disassembly window, hex view,
single-frame step, over new observational bridge fns.
- TAStudio piano-roll: touch frame-input table + scripted playback +
record-to-.rnm from power-on.
- Foreign movie import .fm2/.bk2/.fcm/.fmv/.vmv -> native .rnm (bounds-checked,
16 MiB per-ZIP-member cap, graceful errors).
- Audio depth (rustynes-ios host DSP): 5-band EQ, panning, Schroeder reverb,
crossfeed; bypassable to a bit-identical passthrough.
- Host-side symbol maps (.sym/.mlb/.nl).
Readiness pass / fixes:
- File imports + foreign-movie transcode moved off the main thread.
- poke_ram clamps the address to the work-RAM mirror bridge-side.
- Missed EN/ES catalog strings + VoiceOver labels added across the new views.
- TAStudio .rnm export no longer captures trailing idle frames.
- Mobile ROM loading is iNES/NES 2.0 only: the picker + Info.plist no longer
advertise .fds/.nsf (the shared bridge has no FDS/NSF load path) -- FDS/NSF
on mobile are a post-v2.0.0 carryover.
- docs/ios-v1.9.9-readiness.md records the full gate.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* fix(v1.9.9): address PR #204 review — security scope, RAM bounds, TAStudio
Resolve the gemini + copilot threads on v1.9.9 "Workshop" (all in ios/RustyNES/):
- Security-scoped resource (gemini HIGH x4): hoist startAccessingSecurityScoped-
Resource() + its defer out of Task.detached onto the main-actor caller so the
scope brackets the await (acquiring it inside the detached task can fail).
Fixed in ROMLibrary, PaletteManager, AppModel.importForeignMovie, DebuggerView;
also fixed the identical pre-existing pattern in HDPackStore.importPack.
- importForeignMovie no longer captures the non-Sendable EmulatorCore in a
detached closure: the task returns only Data; the transcode runs back on main.
- CheatsView raw-RAM editor validates the address to $0000-$1FFF (parsedAddr is
nil out-of-range), so Peek/Poke disable and can't alias into the mirror.
- tasStartExport guards against an empty frame table so the recorder is never
left armed.
- SymbolMap parses hex with UInt(_,radix:16) + <= 0xFFFF range check instead of
a fragile length test.
- TAStudio frame-count label uses the localized "%lld frames" key; the poll
timer only runs during an active export (connectable publisher), idle-CPU-free.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
0 commit comments