คอมไพล์ให้เหมือนปี 1992 (2014)
(fabiensanglard.net)- ซอร์สโค้ดต้นฉบับของ Wolfenstein 3D ปี 1992 ไม่เข้ากับระบบสมัยใหม่โดยตรง แต่หากจำลองสภาพแวดล้อม DosBox และ Borland C++ 3.1 ก็สามารถคอมไพล์ใหม่ได้
- สิ่งที่ต้องใช้ประกอบด้วยซอร์สโค้ด Wolfenstein 3D, DosBox, Borland C++ 3.1 และ ทรัพยากร shareware สำหรับรันเกม
- ในขั้นตอนการบิลด์ นอกจากการตั้งค่าโปรเจกต์ Borland C++ แล้ว ยังต้องแก้พาธ
PATH,SIGNON.OBJ,GAMEPAL.OBJด้วยตนเอง - เหตุผลที่กราฟิกเพี้ยนเมื่อรันครั้งแรกคือ ดัชนีกราฟิก ที่คอมไพล์อยู่ในเอนจินไม่ตรงกับตำแหน่งภายในไฟล์ทรัพยากร
- เมื่อคัดลอกทรัพยากร VGA ที่สร้างใหม่และเปิด aspect correction ของ DosBox จะสามารถรันได้ในรูปแบบที่ใกล้เคียงกับอัตราส่วนภาพของจอ CRT ปี 1992
จำลองสภาพแวดล้อมบิลด์ปี 1992
- ซอร์สโค้ดต้นฉบับปี 1992 ของ Wolfenstein 3D ใช้งานตรง ๆ บนระบบสมัยใหม่ที่ผ่านมากว่า 20 ปีได้ยาก แต่หากจัดเครื่องมือและสภาพแวดล้อมการรันให้ตรงกับยุคนั้นก็สามารถคอมไพล์ได้
- สิ่งที่ต้องใช้มี 4 อย่างดังนี้
- ซอร์สโค้ด Wolfenstein 3D
- DosBox
- Borland C++ 3.1
- ทรัพยากร shareware ของ Wolfenstein 3D
เตรียมไดเรกทอรีสำหรับใช้เหมือนไดรฟ์ DOS
- สร้างไดเรกทอรีในเครื่อง 2 โฟลเดอร์เพื่อใช้เหมือนไดรฟ์ DOS
system/csystem/a
- ใส่ไฟล์บีบอัด Borland C++ 3.1 ไว้ใน
system/a - ใส่ซอร์สโค้ด Wolfenstein 3D และไฟล์ VGA ไว้ใน
system/c - หลังแตกไฟล์แล้ว โครงสร้างไฟล์จะจัดเรียงดังนี้
system/a:BCPP31.zipsystem/c:wolfsrc.zip,vgafiles.zip
ติดตั้งคอมไพเลอร์และซอร์สใน DosBox
- หลังเปิด DosBox ให้เมานต์โฟลเดอร์ในเครื่องเป็นไดรฟ์ DOS
- เมานต์
~/system/cเป็นC: - เมานต์
~/system/aเป็นA:
- เมานต์
- รัน
installจากA:\BCPP31เพื่อติดตั้ง Borland C++ 3.1- ใช้ค่าตั้งต้นและเริ่มติดตั้ง
- คำเตือนว่าไม่พบโฟลเดอร์ Microsoft Windows ไม่จำเป็น จึงกด Enter ข้ามไป
- ที่
C:\ให้รันโปรแกรมติดตั้งซอร์สของ Wolfenstein 3D และใช้พาธตั้งต้น\WOLFSRC
บิลด์โปรเจกต์ Borland C++
- รัน Borland C++ 3.1 ด้วย
C:\BORLANDC\BIN\BC.EXE - เปิดโปรเจกต์
..\..\WOLFSRC\WOLF3D.PRJแล้วตั้งค่าไดเรกทอรีดังนี้Include Directories: C:\BORLANDC\INCLUDELibrary Directories: C:\BORLANDC\LIBOutput Directories: OBJSource Directories: C:\WOLFSRC
- ในการบิลด์ครั้งแรกจะเกิดข้อผิดพลาด
Cannot find executable TASM- ออกจาก Borland C++ ตั้งค่า
PATH=C:\BORLANDC\BINแล้วรันใหม่
- ออกจาก Borland C++ ตั้งค่า
- ในการบิลด์ถัดมาจะเกิดข้อผิดพลาด
Unable to find OBJ fileในขั้นตอนลิงก์SIGNON.OBJและGAMEPAL.OBJถูกระบุพาธในโปรเจกต์ผิดเป็นC:\SOURCE\WOLF\- ลบสองรายการนี้ออกจากโปรเจกต์ แล้วเพิ่มกลับเข้าไปใหม่เป็น
WOLFSRC\OBJ\SIGNON.OBJ,WOLFSRC\OBJ\GAMEPAL.OBJ
- หลังจากนั้นรัน
Compile -> Build Allแล้วการบิลด์จะสำเร็จ
ทรัพยากรสำหรับรันและสาเหตุที่กราฟิกเพี้ยน
- หากต้องการรันไฟล์ปฏิบัติการที่คอมไพล์แล้ว ต้องมีทรัพยากรของ Wolfenstein 3D แบบ shareware หรือเวอร์ชันเต็ม
- หลังติดตั้ง shareware แล้วคัดลอกไฟล์
.EXEที่คอมไพล์ได้ไปยังโฟลเดอร์เกมและรัน หน้าจอจะแสดงผลผิดปกติ - สาเหตุอยู่ที่ production pipeline สำหรับสร้างไฟล์กราฟิกและวิธีที่เอนจินเข้าถึงทรัพยากร
- Adrian Carmack และ Kevin Cloud สร้างไฟล์กราฟิก แล้วรวมเป็นชุดด้วยเครื่องมือ IGRABed
- ผลลัพธ์ประกอบด้วยไฟล์ 3 ไฟล์คือ
VGAHEAD.WL1,VGAGRAPH.WL1,VGADICT.WL1และไฟล์ 2 ไฟล์คือGRE.H,GRE.EQU
VGAHEAD.WL1เป็นดัชนีที่ชี้ตำแหน่งข้อมูลภายในVGAGRAPH.WL1VGAGRAPH.WL1เก็บข้อมูลที่บีบอัดด้วย HuffmanVGADICT.WL1มีพจนานุกรม Huffman สำหรับคลายการบีบอัด
GRE.HและGRE.EQUเป็นไฟล์ที่ทำให้เอนจินเข้าถึงทรัพยากรตามชื่อได้- ตัวอย่างเช่น ชื่อตรรกะอย่าง
L_GUYPICจะถูกเชื่อมกับค่าดัชนีจริง - เอนจินถูกบิลด์โดยมีดัชนีรูปภาพแบบ hardcoded อยู่แล้ว
- ตัวอย่างเช่น ชื่อตรรกะอย่าง
- หลังจาก Wolfenstein 3D shareware เปิดตัว ทรัพยากรและ codebase เปลี่ยนไปพร้อมกับ Spears of Destiny ทำให้ดัชนีของเกมที่คอมไพล์ใหม่ไม่ตรงกับตำแหน่งในไฟล์ทรัพยากรเดิม
เปลี่ยนทรัพยากร VGA และแก้อัตราส่วนภาพ
- วิธีแก้คือคัดลอก ทรัพยากร VGA ที่สร้างใหม่ให้ตรงกับดัชนี
.H,.EQUที่รวมอยู่ในซอร์สโค้ดไปยังโฟลเดอร์เกม - หากใช้ทรัพยากร shareware ต้องเปลี่ยนนามสกุลไฟล์จาก
.WL6เป็น.WL1แล้วคัดลอกVGADICT.WL6→VGADICT.WL1VGAGRAPH.WL6→VGAGRAPH.WL1VGAHEAD.WL6→VGAHEAD.WL1
- หลังเปลี่ยนแล้ว รัน
WOLF3D.EXEอีกครั้ง เกมจะทำงานตามปกติ - หน้าจอเริ่มต้นของ DosBox ต่างจากภาพดั้งเดิมที่ผู้คนเห็นในปี 1992
- VGA framebuffer คือ 320x200
- จอ CRT มีอัตราส่วนภาพ 4:3 จึงดูเหมือนถูกยืดในแนวตั้งเมื่อแสดงผล
- ในการตั้งค่า DosBox หากเปลี่ยน
aspect=falseใน[render]เป็นaspect=trueจะเปิดการแก้อัตราส่วนภาพ - เมื่อปรับอัตราส่วนภาพแล้ว Wolfenstein 3D จะรันในลักษณะที่ใกล้เคียงกับการแสดงผลบน CRT ในยุคนั้น
ยังไม่มีความคิดเห็น