AnnePad 0.1.0 Preview 3
Pre-releaseAnnePad 0.1.0 Preview 3 repairs SDL2 controller ownership across sleep, disconnect, reconnect, remap, and foreground resume.
What changed:
- validates stored
SDL_GameControllerhandles against attached state and joystick instance identity; - reconciles four stable player slots against current SDL enumeration at startup, controller events, foreground resume, and a bounded active check;
- keeps valid owners in place, frees stale slots, returns a sole controller to player 1, and assigns additional controllers to the next free slot;
- makes disconnected input neutral and prevents rumble/input reads through invalid handles;
- preserves existing controller bindings, launcher configuration, touch layouts, and preferences; and
- adds deterministic stale-handle, neutral-input, slot, multi-controller-ownership, and foreground regression coverage.
The ROM-free unsigned iOS 16+ arm64 IPA must be re-signed with your own Apple ID/development certificate. It is not an App Store or TestFlight build and contains no Pokémon Stadium ROM, save, extracted game asset, maintainer certificate, or provisioning profile.
Validation completed for maintained source reconstruction, the focused controller regression, the full repository suite, native macOS, ROM-free Simulator, unsigned and locally signed iPhoneOS Release builds, strict app/IPA audits, and two byte-identical package passes. Build 3 was installed in place on a physical iPad with the existing game data, saves, Transfer Pak data, launcher configuration, and AnnePad preferences preserved by verified readback.
Physical-controller acceptance remains separate and open: Bluetooth, wired, natural sleep/wake, held-input release, full mapping, overlay auto behavior, and two-controller slot preservation were not exercised with controller hardware in this pass.