mirror of
https://github.com/ksherlock/ample.git
synced 2026-10-23 16:02:23 +00:00
* Fix slot persistence logic (AmpleWin/Linux) for upstream PR preparation. Implements robust None-aware slot initialization. * Fix: Explicitly pass empty string arguments for disabled slots (None) to prevent MAME using defaults * feat(core): update MAME to 0.288, fix compatibility bugs, add PowerBook fallbacks, and optimize download servers
AmpleWin - Windows Port (Legacy Apple Emulator Frontend)
This is a precision port of the macOS native Ample project to the Windows platform.
Tip
Linux User? Check out the AmpleLinux Port.
Important
Current Version Support: Updated to stay in sync with the latest version of Ample (macOS) resources and also MAME latest binary.
🍎 Ample (macOS) vs. AmpleWin (Windows) Comparison
| Feature | Ample (macOS Native) | AmpleWin (Windows Optimized) | Optimization & Notes |
|---|---|---|---|
| Language | Objective-C (Cocoa) | Python 3.11 + PySide6 (Qt) | Independent development, zero changes to Mac source code |
| Installation | .dmg Image / Homebrew | Portable (+ .bat Auto-Config) | One-click setup for Python and dependencies via AmpleWin.bat |
| UI | Native macOS Components | 1:1 Pixel-Perfect QSS Replica | Replicates Mac aesthetic, with Adaptive Light/Dark Theme support |
| MAME Integration | Built-in Custom Core or Self-selected | Official Core Download or Self-selected | Users can update MAME independently or download via app |
| Machine Selection | Supports Default Bookmark | Full Session Persistence (Auto-Load) | Auto-loads last used machine state without manual bookmarking |
| Software List Perf | Synchronous Loading (Full XML) | Deferred Loading | Major Optimization: Instant machine switching, loads on search |
| Software Search UI | Standard Pop-up List | Smart Overlay Search | Supports real-time search and full descriptive names without UI shifts |
| ROM Download | Supports Auto-Download | High-Speed Failover Engine | Major Optimization: Multi-server failover (callapple + mdk.cab) |
| Validation | Relies on Static .plist | Live Parameter Validation | Major Optimization: Validates against MAME to prevent launch crashes |
| Video Support | Metal / OpenGL / BGFX | BGFX / OpenGL / Vulkan / D3D11 / D3D12 | Optimized for Windows with multi-generational DirectX support |
| Networking | Apple VMNet Framework | Npcap (WinPcap) / PCAP | Standard networking via Npcap (no root fix needed) |
| Operating Logic | Sticky Software Selection | Sticky Software Selection | Preserves compatible software selection when switching machines |
🌟 Key Features
🍏 Faithful Mac Experience (Feature Parity)
- Visual Precision:
- Resolution Scaling: Precision support for Window 1x-4x modes with machine-specific aspect ratio heuristics (e.g., Apple II 4:3 correction).
- Square Pixels: Specialized integer-scaling mode (e.g., 1120x768) to eliminate pixel shimmering.
- Software Library:
- Smart Filtering: Automatically identifies supported media types (flop1, flop2, cass...) to match machine capabilities.
- Search Overlay: Integrated Mac-style search with auto-completion and full descriptive names.
- Compatibility Check: Options marked as
disabledin property lists (e.g. incompatible SCSI cards) are now correctly grayed out and unselectable, matching Mac behavior.
- Advanced Slot Emulation: Full support for nested sub-slots (e.g. SCSI cards).
- Automated Defaults: Automatically initializes default devices (CD-ROM/Hard Disk) upon card selection.
- Slot Consistency: Improved logic to respect "None" (empty) selections across UI refreshes, matching the high standards of the native macOS port.
- ROM Management:
- Search Filter: Real-time searching in the ROM manager window to quickly find system firmwares.
- Download Failover: Automatic multi-server acquisition (callapple + mdk.cab) with transparent failover for maximum stability.
- Extended Library: Expanded support for PowerBook Duo 280, Pravetz 8C, TK3000, and more.
- Compatibility Fallback: Automatically detects affected Macintosh PowerBook models (
macpb160etc.) that suffer from the MAME 0.288 EASC crash bug. Seamlessly switches to a local MAME 0.287 (mame_0287.exe) or VGM Mod (mame-vgm.exe), or offers to download the v0.280 fallback copy.
- Shared Directory: Full parity with the Mac version, allowing direct host-to-emulator file sharing via the
-share_directoryargument. (Includes click-to-browse support). - VGM Support (Advanced): Since modern MAME removed VGM support, AmpleWin implements a robust background workflow to download and configure the MAME-VGM Mod (v0.280). It uses a non-destructive extraction process (
mame-vgm.exe) to preserve your main MAME core while restoring high-fidelity music recording.
🪟 Windows-Specific Optimizations
- Performance:
- Concurrent Downloading: Multi-threaded system for high-speed ROM acquisition.
- Clean Workspace: All MAME side-car files (nvram, cfg, sta) are strictly isolated within the
mamedirectory. - Deferred XML Loading: Major optimization for instant machine switching and search response.
- UI Enhancements:
- Adaptive Theme: Real-time synchronization with Windows Light/Dark system theme.
- Command Preview: Real-time 4-line console preview to monitor exactly what parameters are being passed to MAME.
- Smart Path Handling: Native file/folder selectors for A/V output and Shared Directories, with automatic path normalization (converting
/to\) for maximum Windows compatibility.
- Flexible Backend: Full support for BGFX, OpenGL, Vulkan, and DirectX 11/12 out of the box.
🛠️ Quick Start
- Launch Ample:
Enter the
AmpleWinfolder and runAmpleWin.bat.- The script will check the Python environment, install dependencies, and start the app.
- Fast Deployment:
- Go to ⚙️ Settings -> Click Download MAME to auto-configure the emulator.
- Click 🎮 ROMs to download system firmware.
- Click 📂 Ample Dir to quickly open the local application folder.
- Start playing:
- Select a machine from the left panel.
- Double-click the machine name or click Launch MAME to start.
🌐 Networking (Advanced)
To simulate networking hardware like Uthernet II, Windows requires Npcap (install in "WinPcap compatible mode"). Unlike the macOS version, no "Fix Permissions" is required as Windows handles hardware access via drivers.
📂 Project Structure
| File/Directory | Description |
|---|---|
AmpleWin.bat |
Start Here. Auto-setup script (installs Python deps & runs app). |
build_exe.bat |
Packaging. Creates a dist portable EXE folder using PyInstaller. |
main.py |
Application entry point, UI rendering, and event loop. |
data_manager.py |
Parser for .plist machine definitions and MAME .xml software lists. |
mame_launcher.py |
Command-line builder and process manager. |
rom_manager.py |
Management and multi-threaded downloading of system ROMs. |
mame_downloader.py |
Automated MAME / VGM Mod downloader and extractor. |
mame/ |
Isolated directory for MAME executable, ROMs, and config files. |
Agent.md |
Development log and session history. |
📦 Building from Source (Portable EXE)
If you want to create a standalone executable for distribution:
- Run
build_exe.batin theAmpleWindirectory. - The script will automatically install PyInstaller, package the application, and copy necessary resources.
- The output will be in
AmpleWin\dist\AmpleWin. - Copy the entire
AmpleWinfolder to any location. It is fully portable and does not require Python to run.
📝 Acknowledgments
- Original macOS version developer: Kelvin Sherlock
- Windows Port Developers: anomixer + Antigravity: Dedicated to providing the ultimate Apple II / Macintosh emulation experience on Windows.
