Snow - Trình giả lập Macintosh cổ điển
(snowemu.com)- Snow tái hiện các máy Macintosh cổ điển dựa trên Motorola 680x0 theo cách gần với phần cứng, giúp có thể sử dụng môi trường Mac cũ trên các hệ thống hiện đại
- Thay vì vá ROM hay chặn các lời gọi hệ thống, dự án hướng tới giả lập ở cấp độ phần cứng và đồng thời cung cấp giao diện đồ họa cùng các tính năng gỡ lỗi
- Hỗ trợ nhiều mẫu Mac cổ điển từ Macintosh 128K đến SE/30, cho phép thử nghiệm rộng rãi với dòng máy Mac đời đầu
- Đây là dự án mã nguồn mở theo giấy phép MIT được viết bằng Rust, đồng thời đã công bố bản demo trực tuyến giới hạn và tài liệu cài đặt
- Bản phát hành ổn định có thể tải từ GitHub, còn các bản build phát triển mới nhất ít được kiểm thử hơn nhưng có sẵn cho Windows, macOS và Linux
Giả lập Mac cổ điển gần với phần cứng
- Snow là một dự án giả lập các máy tính Macintosh cổ điển dựa trên Motorola 680x0
- Cung cấp giao diện người dùng đồ họa để điều khiển máy được giả lập cùng các tính năng gỡ lỗi phong phú
- Mục tiêu là giả lập Macintosh ở cấp độ phần cứng nhiều nhất có thể, thay vì vá ROM hoặc chặn các lời gọi hệ thống
- Các mẫu hiện được hỗ trợ:
- Macintosh 128K/512K/512Ke
- Macintosh Plus
- Macintosh SE, non-FDHD và FDHD
- Macintosh Classic
- Macintosh II, non-FDHD và FDHD
- Macintosh IIx, IIcx, SE/30
Cách công bố và trải nghiệm
- Ngôn ngữ triển khai là Rust, và được công bố dưới dạng mã nguồn mở trên GitHub
- Giấy phép là MIT license
- Có cung cấp bản demo trực tuyến giới hạn, nhưng chỉ có thể sử dụng máy được giả lập mà không có UI hay các tính năng khác của toàn bộ phần mềm
- Có thể xem hướng dẫn cài đặt và thông tin bổ sung trong tài liệu trực tuyến
Phát hành và kênh hỗ trợ
- Các bản phát hành ổn định được đóng gói khi đạt tới những cột mốc nhất định
- Có thể tải bản phát hành ổn định từ GitHub releases
- Bản build phát triển mới nhất (bleeding edge) được tạo tự động theo tiến độ phát triển của trình giả lập; có thể bao gồm tính năng mới hơn nhưng ít được kiểm thử hơn
- Các bản build phát triển mới nhất được cung cấp:
- Windows 10 trở lên x86 64-bit
- Windows 10 trở lên ARM64
- macOS 11.7 Big Sur trở lên Universal
- Linux Ubuntu 24.04 x86 64-bit
- Linux Ubuntu 24.04 ARM64
- Báo lỗi và yêu cầu cải tiến được tiếp nhận tại GitHub issues
- Có thể nhận hỗ trợ hoặc trao đổi tại kênh
#snowcủa The Opcode Collective Discord
1 bình luận
Ý kiến trên Hacker News
Để hiểu bối cảnh vì sao một trình giả lập cấp phần cứng dễ dùng và có thể mang theo cho Mac cổ điển lại có ý nghĩa lớn, có thể xem bài viết năm 2020 này: https://invisibleup.com/articles/30/
Máy chơi game từ lâu đã có các trình giả lập như Nestopia, bsnes, Dolphin, Duckstation; phía PC thì ảo hóa như VMWare và VirtualBox đã đáp ứng hầu hết nhu cầu, còn gần đây cũng có các trình giả lập độ trung thực cao như 86Box và MartyPC
C64 có VICE, Amiga có WinUAE, Apple II cũng có các trình giả lập chất lượng cao như KEGS và AppleWin, nhưng Mac nhìn chung vẫn dừng ở các trình giả lập mức cao, xấp xỉ như Basilisk II
Cũng có thể chạy phiên bản Solitaire cho Macintosh ngay trong trình duyệt bằng cách để trình duyệt giả lập MS-DOS rồi chạy Executor/DOS trên đó: https://archive.org/details/executor
Ngoài Executor/DOS, một phiên bản chưa công bố từng chạy trên workstation Sun 3; Executor/NEXTSTEP chạy trên máy NeXT và hỗ trợ cả thiết bị nền 680x0 lẫn PC x86 có thể chạy NEXTSTEP
Executor có độ tương thích thấp nhất vì hoàn toàn không dùng tài sản trí tuệ của Apple; ROM và phần thay thế phần mềm hệ thống là triển khai clean-room, không tháo ngược Apple ROM hay các tệp System
Có bản port Linux, nhưng nhiều khả năng khó build. Lý do là CPU tổng hợp dựa vào các phần mở rộng riêng của gcc để vắt tối đa hiệu năng từ 80386
Tôi biết khá nhiều về Executor, vì tôi đã viết phiên bản ban đầu. Tuy vậy, những phần thật sự ấn tượng như trình giả lập 68k tổng hợp hay subsystem màu là do các lập trình viên giỏi hơn tôi rất nhiều tạo ra
Nó chính xác hơn KEGS hay AppleWin và xử lý nhiều thiết bị ngoại vi hơn, nhưng kém thân thiện với người dùng hơn
Có lẽ vì vậy mà mọi image floppy tôi thử đưa vào đến giờ đều bị đẩy ra ngay lập tức, kể cả đĩa System 7.1.1 800K được cho là tương thích với Mac II
Tiềm năng của Snow rất lớn và tôi tôn trọng công sức đã bỏ ra, nhưng thành thật mà nói, bức tranh giả lập Mac cho đến nay trông vẫn chưa khác xưa là mấy. Nhiều trình giả lập cung cấp một ma trận sản phẩm lồi lõm về phần cứng được giả lập và tính năng hỗ trợ, đòi hỏi nhiều quy trình cùng kiến thức sẵn có về cấu trúc bên trong của Mac đời cũ, và vẫn ở trạng thái hứa hẹn cho tương lai
https://wiki.mamedev.org/index.php/Driver:Mac_68K
Vì tính chính xác, có lẽ nó sẽ không có các tính năng mạnh của BasiliskII. BasiliskII vá OS/ROM để thêm độ phân giải siêu cao và tích hợp gần như liền mạch với hệ thống tệp cũng như mạng của máy chủ
Đáng tiếc là Basilisk khá thiếu ổn định, có lẽ vì vừa không chính xác vừa có các tính năng mạnh. Khi chạy đúng thì dùng thật sự rất dễ chịu
Tôi đã xem qua mã vá của Basilisk và nó không phức tạp đến vậy; trong mã nội bộ của Basilisk, Executor, MACE, v.v. cũng có khá nhiều phần tái triển khai Toolbox
Việc port sẽ cần chút công sức, nhưng nhìn chung có lẽ gần với dịch trực tiếp mã và bổ sung dựa trên kiểm thử
Làm sao tìm được ROM? Tôi đã tải vài cái từ các trang tìm thấy trên Google, nhưng trình giả lập lúc nào cũng báo “Unknown or unsupported ROM file”. Có thể lấy tệp ROM dùng được ở đâu?
Khá nhiều công việc tôi làm thời đầu ngay sau khi tốt nghiệp đại học được lưu trên một đống đĩa Bernoulli định dạng Mac
Phần mềm cần dongle ADB để chạy, nên cần phần cứng thật. Tôi tò mò liệu có bộ chuyển ADB-USB nào có thể map vào trình giả lập không
Để passthrough thô vào trình giả lập, có lẽ cần viết firmware tùy chỉnh. Có lẽ crack phần mềm còn dễ hơn
Nếu là dữ liệu có giá trị, tốt nhất nên kiểm tra trước khi quá muộn
Tôi thử khởi động bằng bộ đĩa cài đặt Mac OS 7.1 tiêu chuẩn dễ kiếm và ROM Mac Plus, nhưng đĩa bị đẩy ra ở Drive 0
Nhìn việc Mini vMac vẫn chạy được thì có vẻ vẫn cần cải thiện
Khá bất ngờ khi hỗ trợ HD20 cho SE, II, v.v. được hiển thị là “không áp dụng”. Theo tôi biết, tất cả các mẫu trong danh sách ngoại trừ II đều có hỗ trợ khởi động HD20 trong ROM
Tôi cũng đang dùng trình giả lập HD20 trên Mac SE thật
Đây là một trong những cách tiện nhất để mang image đĩa có kích thước tùy ý qua lại giữa trình giả lập Mac và trình giả lập floppy thật
Vì đây là trình giả lập 68K được triển khai lại bằng Rust, nên không có phần nào dùng chung với các CPU core nổi tiếng viết bằng C như Musashi hay mã UAE
Mac có cần giả lập chính xác theo chu kỳ phần cứng như Lisa không? Tôi đã thử lisaem và cũng thử nghiệm với Qemu, nhưng Lisa OS đưa ra các giả định về timing phần cứng mà Qemu không thể đáp ứng
Kỹ thuật mã chính xác theo chu kỳ giống như dùng trên Apple II cũng đã được dùng trên Mac
Đây cũng là lý do con trỏ thỉnh thoảng bị khựng khi đang ghi đĩa. Mac có bộ định thời ngắt 60Hz cũng dùng để theo dõi con trỏ, nhưng trong lúc ghi thì phải tắt nó
Điều này cũng được nhắc thoáng qua trong bài của Andy Hertzfeld trên Folklore.org:
Cảm giác thật sự như máy thật và công việc làm rất xuất sắc. Liệu có thể dùng cái này cho giả lập Atari ST không?
Cũng có Clock Signal(CLK). Dự án này tự mô tả là “trình giả lập ghét độ trễ dành cho Acorn Electron và Archimedes, Amstrad CPC, Apple II/II+/IIe và Macintosh đời đầu, Atari 2600 và ST, ColecoVision, Enterprise 64/128, Commodore Vic-20 và Amiga, MSX 1/2, Oric 1/Atmos, các máy tương thích PC đời đầu, Sega Master System, Sinclair ZX80/81 và ZX Spectrum”: https://github.com/TomHarte/CLK