Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions AmpleLinux/Agent.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,31 @@
# Agent Task Audit Log - Ample Linux Port


## 📅 Session: 2026-05-19 (Session 5)

### 🎯 Objective: Complete Slot Configuration Persistence (MAME Command Line)
Synchronized command line argument logic with AmpleWin to ensure "None" slots are explicitly disabled in MAME.

### ✅ Key Achievements:
1. **Command-Line Slot Persistence**:
* Modified `build_args` in `mame_launcher.py` to allow empty string values (e.g. `option is not None` instead of `if option:`).
* This ensures that `-[slot_name] ""` is explicitly passed on the command line, preventing MAME from falling back to its internal defaults.
2. **Cross-Platform Parity**: Ensured consistent behavior with Windows and Web ports.

---

## 📅 Session: 2026-05-11 (Session 4)

### 🎯 Objective: Slot Configuration Consistency Fix
Synchronized slot initialization logic with AmpleWin to fix "None" persistence issue.

### ✅ Key Achievements:
1. **"None-Aware" Slot Initialization**:
* Applied the `slot_name not in self.current_slots` fix to `main.py`.
2. **Cross-Platform Consistency**: Ensured Linux port shares the improved slot behavior.

---

## 📅 Session: 2026-03-02 (Session 3)

### 🎯 Objective: Upstream Version Tracking & Documentation Maintenance
Expand Down
2 changes: 1 addition & 1 deletion AmpleLinux/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ This is a port of the macOS native [Ample](https://github.com/ksherlock/ample) p
### 🍏 Faithful Mac Experience (Feature Parity)
* **Visual Precision**: Precision support for **Window 1x-4x** modes with machine-specific aspect ratio heuristics.
* **Software Library**: Smart filtering, search overlay, and compatibility checking.
* **Advanced Slot Emulation**: Full support for nested sub-slots (e.g. SCSI cards).
* **Advanced Slot Emulation**: Full support for nested sub-slots (e.g. SCSI cards) with robust default device initialization and persistence for "None" selections.
* **ROM Management**: Real-time search, multi-server failover download, extended library.
* **Shared Directory**: Full parity with `-share_directory` argument.

Expand Down
2 changes: 1 addition & 1 deletion AmpleLinux/README_tw.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
### 🍏 忠實還原 Mac 體驗 (功能對齊)
* **視覺精準度**:精準支援 **Window 1x-4x** 模式,並內建機器專屬的比例啟發邏輯。
* **軟體資料庫**:智慧過濾、搜尋遮罩、相容性檢查。
* **進階槽位模擬**:完整支援嵌套子槽位(如 SCSI 卡)。
* **進階槽位模擬**:完整支援嵌套子槽位(如 SCSI 卡),並具備穩健的設備初始化與「空」(None) 選項持久化邏輯
* **ROM 管理**:即時搜尋、多伺服器 Failover 下載、擴展韌體庫。
* **共享目錄**:與 Mac 版功能完全對齊 (`-share_directory`)。

Expand Down
2 changes: 1 addition & 1 deletion AmpleLinux/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -1249,7 +1249,7 @@ def find_global_def(name):
if not slot_name: continue

# Default selection
if not self.current_slots.get(slot_name):
if slot_name not in self.current_slots:
best_val = None
for opt in slot.get('options', []):
if opt.get('default'):
Expand Down
2 changes: 1 addition & 1 deletion AmpleLinux/mame_launcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ def build_args(self, machine, slots=None, media=None, soft_list_args=None, extra

if slots:
for slot_name, option in slots.items():
if option and not slot_name.startswith(':'):
if option is not None and not slot_name.startswith(':'):
# Pass the slot argument regardless of base machine validation
args.extend([f"-{slot_name}", option])

Expand Down
26 changes: 26 additions & 0 deletions AmpleWin/Agent.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,32 @@
# Agent Task Audit Log - Ample Windows Port


## 📅 Session: 2026-05-19 (Session 15)

### 🎯 Objective: Complete Slot Configuration Persistence (MAME Command Line)
Resolved the issue where selecting "None" for a slot in the UI didn't actually disable the device in MAME because empty slot arguments were being omitted from the command line.

### ✅ Key Achievements:
1. **Command-Line Slot Persistence**:
* Modified `build_args` in `mame_launcher.py` to allow empty string values (e.g. `option is not None` instead of `if option:`).
* This ensures that `-[slot_name] ""` is explicitly passed on the command line, preventing MAME from falling back to its internal defaults.
2. **Parity**: Checked and verified this behavior across both `AmpleWin` and `AmpleLinux` ports, ensuring slots explicitly set to "None" are truly disabled when the emulator launches.

---

## 📅 Session: 2026-05-11 (Session 14)

### 🎯 Objective: Slot Configuration Consistency Fix
Resolved an issue where slots with defaults could not be set to "None" because UI refreshes would revert them.

### ✅ Key Achievements:
1. **"None-Aware" Slot Initialization**:
* Modified `initialize_default_slots` to use `slot_name not in self.current_slots`.
* Ensured manual "None" selections are preserved while maintaining automated defaults for new card insertion.
2. **Upstream Compatibility**: Prepared codebase for PR back to original source, ensuring robust slot behavior.

---

## 📅 Session: 2026-03-02 (Session 13)

### 🎯 Objective: Upstream Version Bump & Documentation Maintenance
Expand Down
4 changes: 3 additions & 1 deletion AmpleWin/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,9 @@ This is a precision port of the macOS native [Ample](https://github.com/ksherloc
* **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 `disabled` in 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.
* **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.
Expand Down
4 changes: 3 additions & 1 deletion AmpleWin/README_tw.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,9 @@
* **智慧過濾**:自動識別機器支援的媒體類型 (flop1, flop2, cass...),確保啟動參數與原始硬體一致。
* **搜尋遮罩**:完整還原 Mac 版的搜尋介面,支援自動補完與完整網格化清單顯示。
* **相容性檢查**:自動偵測屬性表中的 `disabled` 標記(如不相容的 SCSI 卡),並正確以灰色顯示不可選,與 Mac 行為一致。
* **進階槽位模擬**:完整支援嵌套子槽位(如 SCSI 卡)。在選中卡片後自動初始化預設設備(如 ID 1 CD-ROM, ID 6 Hard Disk)。
* **進階槽位模擬**:完整支援嵌套子槽位(如 SCSI 卡)。
* **自動化配置**:在選中卡片後自動初始化預設設備(如 ID 1 CD-ROM, ID 6 Hard Disk)。
* **配置持久性**:優化插槽初始化邏輯,確保在 UI 重新整理時能正確保留「空」(None) 的選取狀態,與 Mac 原生行為一致。
* **ROM 管理**:
* **搜尋過濾**:ROM 管理器視窗中新增即時搜尋功能,方便快速查詢系統韌體。
* **下載 Failover**:多伺服器自動獲取 (callapple + mdk.cab),主伺服器失敗時自動切換,確保最高穩定性。
Expand Down
2 changes: 1 addition & 1 deletion AmpleWin/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -1142,7 +1142,7 @@ def find_global_def(name):
if not slot_name: continue

# Default selection
if not self.current_slots.get(slot_name):
if slot_name not in self.current_slots:
best_val = None
for opt in slot.get('options', []):
if opt.get('default'):
Expand Down
2 changes: 1 addition & 1 deletion AmpleWin/mame_launcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ def build_args(self, machine, slots=None, media=None, soft_list_args=None, extra

if slots:
for slot_name, option in slots.items():
if option and not slot_name.startswith(':'):
if option is not None and not slot_name.startswith(':'):
# Pass the slot argument regardless of base machine validation
args.extend([f"-{slot_name}", option])

Expand Down
Loading