Skip to content

Add Fast Forward Speed Picker experimental feature#547

Open
adamgrushan wants to merge 1 commit into
rileytestut:mainfrom
adamgrushan:feature/fast-forward-speed-picker
Open

Add Fast Forward Speed Picker experimental feature#547
adamgrushan wants to merge 1 commit into
rileytestut:mainfrom
adamgrushan:feature/fast-forward-speed-picker

Conversation

@adamgrushan

Copy link
Copy Markdown

Mark the type contribution you are making:

  • Experimental feature (new functionality that can be selectively enabled/disabled)
  • Bug fix (non-breaking change which fixes an issue)

Description

Summary of your changes, including:

  • Why is this change necessary?

Delta's existing "Custom Fast Forward Speed" experimental feature requires configuring a preferred speed per system (NES, SNES, N64, etc.). Many players just want one fast-forward speed everywhere without setting it seven times. This adds a "Fast Forward Speed Picker" experimental feature: a single picker option (2x, 3x, 4x, 8x, or Maximum) that applies across all systems. Speeds above a system's maximum supported rate are automatically capped at that maximum, so one global choice is always safe.

  • Why did you decide on this solution?
  • The feature follows the "Picker" option pattern from Docs/ExperimentalFeatures.md, reusing the existing FastForwardSpeed type (already LocalizedOptionValue-conforming) so the picker displays consistent "2x"-style labels and a "Maximum" nil choice.
  • The implementation is isolated in one new file (Delta/Experimental Features/Features/FastForwardSpeedPicker.swift) containing the options struct and a GameViewController extension, per the isolation guidance.
  • The only change to existing logic is a new lowest-priority branch in performFastForwardAction's speed resolution: per-game speed > per-system speed (Custom Fast Forward Speed) > global picker speed > system maximum. This keeps the new feature composable with the existing one and guarantees no behavior change when disabled (the gating property returns nil unless ExperimentalFeatures.shared.fastForwardSpeedPicker.isEnabled).
  • No changes to DeltaCore or any emulator cores.

Testing

List all iOS versions and devices you've tested this change on.

Example Configurations:

  • iPhone 16 Pro, iOS 27.0 (beta, build 24A5370h)
  • Full workspace build for iOS Simulator (arm64) with zero warnings in the changed files

Checklist

General (All PRs)

  • My code follows the style guidelines of this project
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • My changes generate no new warnings
  • I've tested my changes with different device + OS version configurations (tested on one physical device so far — happy to test additional configurations if needed)

Experimental Feature-specific

  • Added property to ExperimentalFeatures struct annotated with @Feature
  • Uses @Option's to persist all feature-related data
  • Locked all behavior changes behind ExperimentalFeatures.shared.[feature].isEnabled runtime check
  • Isolates changes to separate files as much as possible (e.g. via Swift extensions)

🤖 Generated with Claude Code

Adds a new experimental feature that lets users pick a single preferred
fast forward speed (2x/3x/4x/8x, or Maximum) that applies across all
systems. Speeds above a system's maximum supported rate are capped.

Precedence: per-game speed > per-system speed (Custom Fast Forward
Speed) > global picker speed > system maximum. The feature has no
effect when disabled.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant