mirror of
https://github.com/ksherlock/ample.git
synced 2026-04-26 23:17:59 +00:00
* Initialize and finalize AmpleWin: Full-featured Windows Port with Adaptive UI, optimized engine, and internationalized documentation * Update media args * AmpleWin: Finalized Windows Port with Adaptive UI, Optimized Engine, VGM Recording, and Shared Directory Support * Fix NameError: subprocess not defined in main.py * UI: Remove redundant MAME path label from Paths tab * UI: Implement smart slot validation for disabled options and click-to-browse Shared Directory * feat(win): editable console, launch logic fixes & doc updates * Fix path quoting issues, add file selectors for A/V, and normalize shared dir path * feat: sync with Ample v0.285 resources, update to MAME 0.285, and add ROM search filter * v0.285: Expand ROM library, implement download failover, and advanced SCSI sub-slot emulation * Adjust ROM download priority: prefer callapple.org for stability, mdk.cab as fallback * Sync roms.plist with upstream/master * docs(agent): record upstream synchronization session * refactor: rename mame_bin to mame directory * chore: update .gitignore for mame directory rename * fix(main): update download and detection paths to 'mame' * fix(main): robust path resolution for pyinstaller builds * docs(readme): add build_exe.bat to project structure * fix(build): remove creation of empty mame directory to avoid confusion * feat(build): auto-generate application icon from Assets.xcassets * Add AmpleLinux - Linux Port of Ample (Apple II/Mac emulator frontend) - Ported from AmpleWin with ~20 Linux-specific adaptations - Replaced winreg with gsettings/KDE dark mode detection - Replaced os.startfile with xdg-open - Removed MAME auto-download (users install via package manager) - Added system-wide MAME detection (PATH, /usr/bin, /usr/games) - Removed all .exe suffixes from binary references - Created AmpleLinux.sh launcher script - Dual-language READMEs (English + Traditional Chinese) * Fix: use python3 -m pip instead of pip3/pip for modern Linux compatibility * feat(linux): Finalize AmpleLinux port documentation and build scripts * Fix formatting for Windows and Linux user notes Updated user guidance for Windows and Linux users. * feat(linux): interactive .desktop install, runtime icon loading, updated docs * docs(linux): clarify mame_downloader.py usage status * docs: add PR draft template * fix(linux): add binutils dependency check for pyinstaller * Update: mame 0.286 --------- Co-authored-by: User <user@example.com>
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). Automatically initializes default devices (CD-ROM/Hard Disk) upon card selection.
- 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.
- 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.
