• ซอร์สโค้ดต้นฉบับของ 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/c
    • system/a
  • ใส่ไฟล์บีบอัด Borland C++ 3.1 ไว้ใน system/a
  • ใส่ซอร์สโค้ด Wolfenstein 3D และไฟล์ VGA ไว้ใน system/c
  • หลังแตกไฟล์แล้ว โครงสร้างไฟล์จะจัดเรียงดังนี้
    • system/a: BCPP31.zip
    • system/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\INCLUDE
    • Library Directories: C:\BORLANDC\LIB
    • Output Directories: OBJ
    • Source Directories: C:\WOLFSRC
  • ในการบิลด์ครั้งแรกจะเกิดข้อผิดพลาด Cannot find executable TASM
    • ออกจาก Borland C++ ตั้งค่า PATH=C:\BORLANDC\BIN แล้วรันใหม่
  • ในการบิลด์ถัดมาจะเกิดข้อผิดพลาด 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.WL1
    • VGAGRAPH.WL1 เก็บข้อมูลที่บีบอัดด้วย Huffman
    • VGADICT.WL1 มีพจนานุกรม Huffman สำหรับคลายการบีบอัด
  • GRE.H และ GRE.EQU เป็นไฟล์ที่ทำให้เอนจินเข้าถึงทรัพยากรตามชื่อได้
    • ตัวอย่างเช่น ชื่อตรรกะอย่าง L_GUYPIC จะถูกเชื่อมกับค่าดัชนีจริง
    • เอนจินถูกบิลด์โดยมีดัชนีรูปภาพแบบ hardcoded อยู่แล้ว
  • หลังจาก Wolfenstein 3D shareware เปิดตัว ทรัพยากรและ codebase เปลี่ยนไปพร้อมกับ Spears of Destiny ทำให้ดัชนีของเกมที่คอมไพล์ใหม่ไม่ตรงกับตำแหน่งในไฟล์ทรัพยากรเดิม

เปลี่ยนทรัพยากร VGA และแก้อัตราส่วนภาพ

  • วิธีแก้คือคัดลอก ทรัพยากร VGA ที่สร้างใหม่ให้ตรงกับดัชนี .H, .EQU ที่รวมอยู่ในซอร์สโค้ดไปยังโฟลเดอร์เกม
  • หากใช้ทรัพยากร shareware ต้องเปลี่ยนนามสกุลไฟล์จาก .WL6 เป็น .WL1 แล้วคัดลอก
    • VGADICT.WL6VGADICT.WL1
    • VGAGRAPH.WL6VGAGRAPH.WL1
    • VGAHEAD.WL6VGAHEAD.WL1
  • หลังเปลี่ยนแล้ว รัน WOLF3D.EXE อีกครั้ง เกมจะทำงานตามปกติ
  • หน้าจอเริ่มต้นของ DosBox ต่างจากภาพดั้งเดิมที่ผู้คนเห็นในปี 1992
    • VGA framebuffer คือ 320x200
    • จอ CRT มีอัตราส่วนภาพ 4:3 จึงดูเหมือนถูกยืดในแนวตั้งเมื่อแสดงผล
  • ในการตั้งค่า DosBox หากเปลี่ยน aspect=false ใน [render] เป็น aspect=true จะเปิดการแก้อัตราส่วนภาพ
  • เมื่อปรับอัตราส่วนภาพแล้ว Wolfenstein 3D จะรันในลักษณะที่ใกล้เคียงกับการแสดงผลบน CRT ในยุคนั้น

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น