จำลอง Sound Blaster และ OPL3 ใน DOS ล้วนๆ โดยใช้การ์ดเสียงแบบ PCI (ออนบอร์ดและการ์ดเสริม) ที่ทันสมัย
ซอร์สโค้ดจาก MPXPlay ใช้เพื่อรองรับการ์ดเสียง/ชิปต่อไปนี้
เปิดใช้งานและทำงาน:
sc_ich
: Intel ICH / nForce / SIS 7012sc_inthd
: เสียงความละเอียดสูงของ Intel (HDA)sc_via82
: เวีย VT82C686, VT8233/37sc_sbliv
: SB สด! / ออดิจิsc_sbl24
: SB Audigy LS (CA0106)sc_es1371
: เอนโซนิก ES1371/1373sc_cmi
: C-Media CMI8338/8738รองรับการคอมไพล์อิน แต่ยังไม่ทดลอง:
sc_via82
: เวีย VT8235มีซอร์สโค้ดอยู่ แต่ "ยังใช้งานไม่ได้":
sc_sbxfi
: Creative X-Fi EMU20KXไดรเวอร์ Linux เพิ่มเติมที่พอร์ตโดย jiyunomegami
สำหรับการจัดการหน่วยความจำ ให้ใช้อย่างใดอย่างหนึ่ง:
JEMMEX
เท่านั้น: ให้ทั้ง HIMEM + EMMHIMEMX
และ JEMM386
: แยก HIMEM + EMM ในทั้งสองกรณี ให้ใช้ JLOAD
(จากการแจกแจง Jemm) เพื่อโหลด QPIEMU.DLL
ก่อนที่จะเริ่ม SBEMU
เพื่อเปิดใช้งานการสนับสนุนโหมดจริง หากคุณไม่โหลด JEMM+QPIEMU (หรือ QEMM) ระบบจะรองรับเฉพาะแอปพลิเคชันในโหมดป้องกันเท่านั้น
หากคุณต้องการใช้ SBEMU โดยไม่ต้องสร้างมันขึ้นมา โปรดอ่าน README.txt สำหรับการตั้งค่าและรายการตัวเลือกบรรทัดคำสั่ง
รองรับ macOS, Linux และ Windows สำหรับ Windows ให้พิจารณาใช้ไบนารี WSL2 + Linux หากคุณต้องการตรวจแก้จุดบกพร่อง/ทดสอบบน DOS ในเครื่องของคุณบ่อยครั้ง makefile.dos สำหรับคุณ
สคริปต์สำหรับสร้าง toolchain GCC ล่าสุดสำหรับ DJGPP มีอยู่ที่นี่:
นอกจากนี้ยังมีรีลีสที่สร้างไว้ล่วงหน้าสำหรับ toolchain หากคุณไม่ต้องการสร้าง DJGPP ด้วยตัวเอง เวอร์ชันปัจจุบัน (ตุลาคม 2023) ใช้ GCC 12.2.0 แต่ในอนาคตอาจมีเวอร์ชัน GCC ที่ใหม่กว่า:
สิ่งนี้ถือว่าการติดตั้ง Debian/Ubuntu หากคุณใช้ distro อื่น ฉันถือว่าคุณรู้วิธีแก้ไขและสามารถแปลคำสั่งเหล่านั้นเป็นการแจกแจงเฉพาะของคุณได้
หากต้องการรับ make
และเครื่องมืออื่นๆ การติดตั้งเครื่องมือสร้างโฮสต์นั้นง่ายที่สุด:
sudo apt ติดตั้ง -y build-essential
บน MacOS ให้ติดตั้งเครื่องมือบรรทัดคำสั่ง Xcode ซึ่งจะทำให้คุณ make
และยูทิลิตี้โฮสต์อื่นๆ
หากคุณกำลังวางแผนสร้าง DJGPP จากแหล่งที่มา จำเป็นต้องมีเครื่องมือสร้างเพิ่มเติมบางอย่าง โปรดดูรายละเอียดที่ไฟล์ build-djgpp
README
เมื่อซอร์สโค้ดเพิ่มขึ้น จึงไม่แนะนำให้สร้างจาก DOS นอกจากนี้บิลด์ DJGPP DOS ไม่ได้ใช้ -O2 และ -flto เนื่องจากเวอร์ชัน GCC เก่าและมีข้อบกพร่องด้วย -O2
หากจำเป็นต้องสร้างโปรเจ็กต์บน DOS ให้ดาวน์โหลด DJGPP ดั้งเดิมจากที่นี่: https://www.delorie.com/djgpp/zip-picker.html มันได้สร้างยูทิลิตี้ด้วย
MS-DOS,OpenDOS,PC-DOS
ใน Which operating system will you be using?
เลื่อนลงC++
ที่ Which programming languages will you be using?
Tell me which files I need
DOSLFN ก็จำเป็นต้องดำเนินการสร้างด้วย ต้องตั้งค่า PATH env อย่างถูกต้องก่อนสร้าง set PATH=%PATH%;C:DJGPPBIN
แนะนำให้ใส่ใน autoexec.bat จากนั้น
make -f makefile.dos
คุณยังสามารถใช้ RHIDE เพื่อดำเนินการแก้ไขและสร้างได้ทันที: เพิ่ม SET DJGPP=C:DJGPPDJGPP.ENV
ไปยัง autoexec.bat จากนั้นเพียงเรียกใช้ rhide
ในรูทโปรเจ็กต์ผ่านทางบรรทัดคำสั่ง ใช้ Alt+C
เพื่อใช้งานเมนู Compile
และเลือก Make
สำหรับบิลด์การพึ่งพาหรือ Build all
สำหรับบิลด์ใหม่ทั้งหมด
โฟลเดอร์ bin
ของ toolchain DJGPP ของคุณจะต้องอยู่ใน $PATH
เพื่อให้คำสั่งต่อไปนี้ทำงานและส่งออกเวอร์ชัน DJGPP GCC ของคุณ:
i586-pc-msdosdjgpp-gcc --version
หากวิธีนี้ใช้ได้ผล การสร้างโครงการก็ทำได้ง่ายๆ ดังนี้:
make
เนื่องจากคุณใช้เครื่องสมัยใหม่ที่มี CPU แบบมัลติคอร์ ให้สร้างแบบขนานซึ่งเร็วกว่า เช่น สำหรับ CPU แบบ Quad-core ให้ใช้กระบวนการแบบขนาน 8 กระบวนการเพื่อเร่งการสร้าง:
make -j8
หลังจากบิลด์เสร็จสิ้น คุณจะพบผลลัพธ์บิลด์ในโฟลเดอร์ชื่อ output
เช่น output/sbemu.exe
การรองรับเสียงซีดีใน DOS ต้องใช้สองส่วน:
MSCDEX
(หรือ SHSUCDX
)สำหรับส่วนที่หนึ่ง คุณต้องมีไดรฟ์ซีดีรอมที่มีเอาต์พุตเสียงอะนาล็อกและตั้งค่าไดรเวอร์ซีดีรอมที่เข้ากันได้กับ MSCDEX
ส่วนที่สอง (การควบคุมระดับเสียง) ได้รับการดูแลโดย SBEMU เมื่อเริ่มต้นระบบ
หากต้องการปรับระดับเสียงของ CD-Audio (โดยค่าเริ่มต้นคือระดับเสียง 100%) คุณสามารถใช้โปรแกรมที่เข้ากันได้กับ Sound Blaster เช่น "SBMIX" เนื่องจาก SBEMU จะจำลองและส่งต่อการตั้งค่า CD-Audio Mixer
อย่าลืมว่าหากต้องการได้ยินสิ่งใดจริงๆ คุณต้องเชื่อมต่อสายสัญญาณเสียงอะนาล็อกจากไดรฟ์ซีดีรอมของคุณเข้ากับส่วนหัว CD-IN 4 พินบนการ์ดเสียงของคุณ (หรือมาเธอร์บอร์ดสำหรับเสียงออนบอร์ด)
คุณสามารถกำหนดค่า SBEMU เพื่อส่งข้อความดีบักไปยังพอร์ตอนุกรมแทนคอนโซลได้ นอกจากนี้ยังใช้งานได้ในเบื้องหลังเมื่อเกมแสดงแบบเต็มหน้าจอ และมีประโยชน์มากสำหรับการดีบัก
หากต้องการสร้าง SBEMU ด้วยเอาต์พุตการดีบัก ให้ใช้:
make DEBUG=1
จากนั้น เรียกใช้ SBEMU ด้วยคำสั่งนี้สำหรับเอาต์พุตการดีบัก (9600, 8N1) บน COM1 (ใช้ /DBG2
สำหรับ COM2):
sbemu /DBG1
หากต้องการปิดใช้งานเอาต์พุตดีบักพอร์ตอนุกรมขณะรันไทม์ ให้ใช้:
sbemu /DBG0
เอาต์พุตการตรวจแก้จุดบกพร่องแบบอนุกรมถูกปิดใช้งานตามค่าเริ่มต้น