- Snow เป็นอีมูเลเตอร์โอเพนซอร์สที่จำลองการทำงานของฮาร์ดแวร์ Macintosh ที่ใช้ Motorola 680x0 ให้ใกล้เคียงเครื่องจริงมากที่สุด
- มาพร้อม กราฟิกยูสเซอร์อินเทอร์เฟซ (GUI) และ ความสามารถด้านดีบักที่ทรงพลัง
- แตกต่างจากอีมูเลเตอร์เดิม ๆ ตรงที่ใช้แนวทางลดการ แพตช์ ROM หรือการดักจับ system call ให้น้อยที่สุด
- รองรับรุ่น Macintosh 128K/512K/Plus/SE/Classic/II
- พัฒนาด้วย Rust และสามารถ บิลด์และดาวน์โหลดได้บนระบบปฏิบัติการหลากหลาย
ภาพรวมโครงการ
- Snow เป็นอีมูเลเตอร์ที่จำลองคอมพิวเตอร์ Macintosh แบบคลาสสิก (ตระกูล 680x0) ขึ้นมาด้วยซอฟต์แวร์
- ผู้ใช้สามารถใช้งานผ่าน กราฟิกอินเทอร์เฟซ ได้ราวกับกำลังควบคุม Mac จริง
- มี ความสามารถด้านดีบัก ที่หลากหลาย จึงเหมาะทั้งสำหรับการพัฒนาและการวิเคราะห์
วิธีการทำงานและจุดเด่น
- Snow มุ่งเน้น การอีมูเลตอย่างสมบูรณ์ในระดับฮาร์ดแวร์ (low-level) ให้มากที่สุดเท่าที่เป็นไปได้
- หมายความว่าแทนที่จะใช้วิธีทั่วไปอย่างการแพตช์ ROM หรือเลี่ยง system call ก็จะทำให้ระบบทำงานเหมือนฮาร์ดแวร์จริง
- รุ่นที่รองรับอย่างเป็นทางการ:
- Macintosh 128K
- Macintosh 512K
- Macintosh Plus
- Macintosh SE
- Macintosh Classic
- Macintosh II
- พัฒนาด้วยภาษา Rust โดยเน้นทั้งประสิทธิภาพและความปลอดภัย
- เป็นโอเพนซอร์สและเผยแพร่ภายใต้สัญญาอนุญาต MIT
ทดลองใช้งานและเอกสาร
- มี เดโมเวอร์ชันแบบจำกัด ที่สามารถรันได้บนเว็บเบราว์เซอร์
- อย่างไรก็ตาม เดโมนี้ไม่ได้มีฟังก์ชันทั้งหมดของซอฟต์แวร์เต็มรูปแบบ (โดยเฉพาะ GUI เป็นต้น)
- สามารถดูวิธีติดตั้งและการใช้งานอย่างละเอียดได้จาก เอกสารออนไลน์
ข้อมูลการดาวน์โหลด
- ขณะนี้มีการให้บริการอัตโนมัติเฉพาะ เวอร์ชันพัฒนาล่าสุด (bleeding edge build)
- Windows 10 ขึ้นไป (x86 64 บิต)
- macOS 11.7 (Big Sur) ขึ้นไป (universal)
- Linux (Ubuntu 24.04, x86 64 บิต และ ARM64)
- มีการแจกจ่ายไฟล์บิลด์ที่ดาวน์โหลดได้ทันทีแยกตามระบบปฏิบัติการ
การติดต่อและการมีส่วนร่วม
- สามารถแจ้ง issue และร่วมพัฒนาได้ผ่านที่เก็บ GitHub
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เกี่ยวกับบริบทที่การมีอีมูเลเตอร์ระดับฮาร์ดแวร์สำหรับระบบ Mac แบบคลาสสิกที่พกพาได้และใช้งานง่ายนั้นมีความหมายมาก ขอแนะนำให้อ่านบล็อกโพสต์ปี 2020 นี้ประกอบ https://invisibleup.com/articles/30/ ฝั่งเกมคอนโซลมีอีมูเลเตอร์ยอดเยี่ยมอย่าง Nestopia, bsnes, Dolphin, Duckstation ฯลฯ มานานแล้ว ขณะที่ฝั่ง PC มีระบบ virtualization อย่าง VMWare และ VirtualBox คอยตอบโจทย์ความต้องการของผู้ใช้ทั่วไป และระยะหลังก็มีอีมูเลเตอร์ความแม่นยำสูงอย่าง 86Box, MartyPC ปรากฏขึ้น ส่วน Commodore 64 มี VICE, Amiga มี WinUAE, Apple II มีอีมูเลเตอร์คุณภาพดีอย่าง KEGS และ AppleWin แต่ฝั่ง Mac กลับรู้สึกว่าที่มีอยู่ส่วนใหญ่เป็นอีมูเลเตอร์แบบ Basilisk II ที่ใกล้เคียงกับการ abstraction ระดับสูง คือจำลองออกมาให้คล้ายแบบคร่าว ๆ มากกว่า
มีการกล่าวถึงทางเลือกอีกตัวคือ Executor แม้จะขาดความเข้ากันได้อยู่มาก https://en.wikipedia.org/wiki/Executor_(software) มีเดโมที่ให้เบราว์เซอร์อีมูเลต MS-DOS แล้วรันเกม Solitaire สำหรับ Macintosh บน Executor/DOS ได้ https://archive.org/details/executor นอกจาก Executor/DOS แล้วยังมีเวอร์ชันปิดสำหรับเวิร์กสเตชัน Sun 3 ที่ใช้โปรเซสเซอร์ 680x0 และ Executor/NEXTSTEP สำหรับสภาพแวดล้อม NEXTSTEP ด้วย มีการชี้ว่า Executor เข้ากันได้น้อยที่สุดเพราะไม่ใช้ทรัพย์สินทางปัญญาของ Apple เลยแม้แต่น้อย ทั้ง ROM และตัวแทนของ system software ถูกเขียนใหม่ทั้งหมดแบบ clean-room Executor เวอร์ชันเก่าใช้ส่วนขยายเฉพาะของ gcc จึงอาจทำให้การ build บน Linux ปัจจุบันทำได้ยากหรือเป็นไปไม่ได้ ผู้แสดงความเห็นเคยพัฒนา Executor เวอร์ชันแรก ๆ ด้วยตนเอง ส่วนอีมูเลเตอร์ 68k ประสิทธิภาพสูงและ color subsystem นั้นเป็นผลงานของโปรแกรมเมอร์ที่เก่งกว่ามาก
เห็นด้วยว่าเนื้อหาในบทความนั้นเป็นความจริง แต่ก็ให้ความรู้สึกว่าดูแคลนความพยายามของชุมชนผู้ร่วมพัฒนาแบบไม่หวังผลตอบแทนมากเกินไป
เน้นย้ำว่า MAME ก็อีมูเลต Macintosh และ Apple II ในระดับฮาร์ดแวร์เช่นกัน แม้จะแม่นยำกว่า KEGS และ AppleWin และรองรับอุปกรณ์ต่อพ่วงมากกว่า แต่ก็เป็นมิตรต่อผู้ใช้น้อยกว่า
ลองรันอีมูเลเตอร์ Macintosh II FDHD แล้ว แต่ในเมนูขึ้นให้โหลดได้เฉพาะฟลอปปี 400K/800K เท่านั้น ทั้งที่คู่มือของ Snow ระบุชัดว่ารองรับ SuperDrive 2 ตัว https://docs.snowemu.com/manual/media/floppies ด้วยเหตุนี้อิมเมจฟลอปปีที่ป้อนให้จึงถูกเด้งออกทันทีทั้งหมด แม้แต่ดิสก์ System 7.1.1 แบบ 800K สำหรับระบบที่เข้ากันได้กับ Mac II ก็ยังไม่รู้จัก มองว่า Snow เองมีศักยภาพสูงและขอชื่นชมความทุ่มเท แต่ภาพรวมวงการอีมูเลชัน Mac ก็ยังอยู่ในสภาพที่อีมูเลเตอร์แต่ละตัวรองรับฮาร์ดแวร์และฟีเจอร์ไม่เท่ากัน ยังต้องพึ่งลูกเล่นเฉพาะทางและความรู้เดิมเกี่ยวกับโครงสร้างภายในของ Mac รุ่นเก่าอยู่มาก ให้ความรู้สึกเหมือนมีแต่คำสัญญาที่มองไปข้างหน้า
แชร์ข้อมูลว่า MAME รองรับ Macintosh ที่ใช้ 68k ได้ในระดับหนึ่งเช่นกัน https://wiki.mamedev.org/index.php/Driver:Mac_68K
ด้วยข้อกำหนดเรื่องความแม่นยำของอีมูเลเตอร์ จึงน่าจะขาดฟีเจอร์สำคัญบางอย่างที่ BasiliskII มีอยู่ BasiliskII ให้ฟีเจอร์ต่าง ๆ เช่นการรองรับความละเอียดสูงมากผ่านการแพตช์ OS และ ROM รวมถึงการผสานรวมกับระบบไฟล์และเครือข่ายของโฮสต์แบบค่อนข้างลื่นไหล แต่เพราะสิ่งเหล่านี้อาจไม่แน่นหนาหรือไม่แม่นยำนัก ประสบการณ์ใช้งานจึงไม่ได้มีความสมบูรณ์แบบเฉพาะตัวนัก ทว่าเมื่อทุกอย่างทำงานได้ก็ใช้งานสบายมากจริง ๆ
ขอคำแนะนำเรื่องการหาไฟล์ ROM สำหรับ Mac ดาวน์โหลดมาหลายตัวจากเว็บไซต์ที่หาเจอใน Google แต่ตัวอีมูเลเตอร์ยังขึ้นข้อผิดพลาดว่า "ไฟล์ ROM ไม่รู้จักหรือไม่รองรับ" อยู่ตลอด จึงถามว่ามีวิธีหา ROM ที่ใช้การได้อย่างไร
ขอแนะนำอย่างมั่นใจว่า https://macintoshgarden.org/ เป็นแหล่งที่ดีที่สุดและเชื่อถือได้เสมอ
รู้สึกว่าค่อนข้างเหลือเชื่อที่ Apple ยังถึงขั้นฟ้องคนที่อัปโหลด ROM เก่าแบบนี้อยู่
แชร์ประสบการณ์ส่วนตัวว่า ROM จากคลังนี้ใช้งานได้ https://archive.org/details/mac_rom_archive_-_as_of_8-19-2011
งานช่วงแรกหลังเรียนจบมหาวิทยาลัยถูกเก็บอยู่ในดิสก์ Bernoulli ฟอร์แมต Mac และการรันซอฟต์แวร์นั้นจำเป็นต้องมี ADB dongle จึงสงสัยว่าจำเป็นต้องใช้ฮาร์ดแวร์จริงหรือไม่ คำถามคือมี ADB-USB adapter ตัวไหนที่สามารถแมปให้ต่อเข้ากับอีมูเลเตอร์ได้หรือเปล่า
เท่าที่รู้ ADB-USB adapter ตอนนี้รองรับแค่เมาส์กับคีย์บอร์ด โดยเฟิร์มแวร์ภายในแมปได้เพียง USB HID เท่านั้น ถ้าจะทำ pass-through แบบสมบูรณ์ต้องใช้เฟิร์มแวร์คัสตอม และอาจง่ายกว่าถ้าจะไปแฮ็กระบบป้องกันการคัดลอกของซอฟต์แวร์นั้นแทน
ถ้ายังไม่ได้สำรองข้อมูล ก็มีความเสี่ยงข้อมูลสูญหาย ถ้าสำคัญมากแนะนำให้รีบตรวจสอบโดยเร็วที่สุด
มีความเห็นว่าคนที่ยังมีไดรฟ์ Bernoulli ที่ใช้งานได้ มักจะมีฮาร์ดแวร์ Mac รุ่นเก่าที่เข้าชุดกันอยู่แล้วด้วย
ผลิตภัณฑ์นี้อาจช่วยได้ https://www.bigmessowires.com/usb-wombat/
เน้นว่าเป็นอีมูเลเตอร์ 68K ที่ reimplement ใหม่ด้วย Rust โดยไม่ได้ใช้โค้ด CPU ภาษา C ที่เป็นที่รู้จักอย่างกว้างขวางอย่าง Musashi หรือ UAE เลย
ลองบูตด้วยแผ่นติดตั้ง Mac OS 7.1 ที่หาได้ทั่วไปและไฟล์ ROM ของ Mac Plus แล้ว แต่ไดรฟ์ 0 คายดิสก์ออกตลอด Mini vMac กลับใช้งานได้ดี จึงรู้สึกว่ายังต้องปรับปรุงอีก
รู้สึกแปลกใจที่มีการระบุว่า HD20 บน Mac SE หรือ II เป็นต้นเป็น "ไม่เกี่ยวข้อง" เพราะทุกโมเดล (ยกเว้น II) รองรับการบูต HD20 ที่ระดับ ROM อยู่แล้ว กำลังใช้อีมูเลเตอร์ HD20 บน Mac SE จริง และคิดว่านี่เป็นวิธีที่ดีมากในการนำอิมเมจดิสก์หลายรูปแบบไปใช้ได้อย่างง่ายดาย ทั้งกับ Mac และกับฟลอปปีอีมูเลเตอร์
สงสัยว่า Mac ก็ต้องการ "cycle accuracy" ของฮาร์ดแวร์แบบ Lisa หรือไม่ เพราะในกรณีของ Lisa นั้น OS สมมติให้มี timing ของฮาร์ดแวร์บางอย่าง ซึ่งอีมูเลเตอร์อย่าง Qemu ตอบสนองไม่ได้
แชร์ความประทับใจส่วนตัวว่าการทำออกมาดูสมจริงมาก และถามว่ามีความหวังที่จะอีมูเลต Atari ST ได้ด้วยหรือไม่