- 1992년 Wolfenstein 3D 원본 소스는 현대 시스템과 바로 맞지 않지만, DosBox와 Borland C++ 3.1 환경을 재현하면 다시 컴파일할 수 있음
- 필요한 구성은 Wolfenstein 3D 소스 코드, DosBox, Borland C++ 3.1, 실행용 shareware 자산으로 정리됨
- 빌드 과정에서는 Borland C++ 프로젝트 설정뿐 아니라
PATH,SIGNON.OBJ,GAMEPAL.OBJ경로를 직접 고쳐야 함 - 처음 실행 시 그래픽이 깨지는 이유는 엔진에 컴파일된 그래픽 인덱스와 자산 파일 내부 위치가 서로 어긋나기 때문임
- 재생성된 VGA 자산을 복사하고 DosBox의 aspect correction을 켜면 1992년 CRT 화면비에 가까운 형태로 실행 가능함
1992년 빌드 환경 재현
- Wolfenstein 3D의 1992년 원본 소스 코드는 20년 넘게 지난 현대 시스템에서는 그대로 쓰기 어렵지만, 당시 도구와 실행 환경을 맞추면 컴파일할 수 있음
- 필요한 구성은 다음 네 가지임
- Wolfenstein 3D 소스 코드
- DosBox
- Borland C++ 3.1
- Wolfenstein 3D shareware 자산
DOS 드라이브처럼 쓸 디렉터리 준비
- 로컬에 DOS 드라이브처럼 사용할 디렉터리 2개를 만듦
system/csystem/a
system/a에는 Borland C++ 3.1 압축 파일을 받음system/c에는 Wolfenstein 3D 소스 코드와 VGA 파일을 받음- 압축 해제 후 파일 배치는 다음처럼 정리됨
system/a:BCPP31.zipsystem/c:wolfsrc.zip,vgafiles.zip
DosBox에서 컴파일러와 소스 설치
- DosBox를 실행한 뒤 로컬 폴더를 DOS 드라이브로 마운트함
~/system/c를C:로 마운트~/system/a를A:로 마운트
A:\BCPP31에서install을 실행해 Borland C++ 3.1을 설치함- 기본 설정을 유지하고 설치를 시작함
- Microsoft Windows 폴더를 찾을 수 없다는 경고는 필요하지 않아 Enter로 넘어감
C:\에서 Wolfenstein 3D 소스 설치 프로그램을 실행하고 기본 경로\WOLFSRC를 사용함
Borland C++ 프로젝트 빌드
C:\BORLANDC\BIN\BC.EXE로 Borland C++ 3.1을 실행함..\..\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를 게임 폴더에 복사해 실행하면 화면이 이상하게 표시됨 - 원인은 그래픽 파일을 만드는 제작 파이프라인과 엔진의 자산 접근 방식에 있음
- Adrian Carmack와 Kevin Cloud가 그래픽 파일을 만든 뒤 IGRABed 도구로 묶음
- 출력은
VGAHEAD.WL1,VGAGRAPH.WL1,VGADICT.WL13개 파일과GRE.H,GRE.EQU2개 파일로 구성됨
VGAHEAD.WL1은VGAGRAPH.WL1내부 데이터 위치를 가리키는 인덱스임VGAGRAPH.WL1에는 Huffman 압축 데이터가 저장됨VGADICT.WL1에는 압축 해제용 Huffman 딕셔너리가 들어 있음
GRE.H와GRE.EQU는 엔진이 자산을 이름으로 접근하게 해주는 파일임- 예를 들어
L_GUYPIC같은 논리 이름이 실제 인덱스 값과 연결됨 - 엔진은 이미지 인덱스를 하드코딩한 상태로 빌드됨
- 예를 들어
- Wolfenstein 3D shareware 출시 이후 자산과 코드베이스가 Spears of Destiny와 함께 변하면서, 새로 컴파일한 게임의 인덱스가 기존 자산 파일의 위치와 맞지 않게 됨
VGA 자산 교체와 화면비 보정
- 해결 방법은 소스 코드에 포함된
.H,.EQU인덱스와 맞도록 재생성된 VGA 자산을 게임 폴더에 복사하는 것임 - shareware 자산을 사용할 경우 파일 확장자를
.WL6에서.WL1로 바꿔 복사해야 함VGADICT.WL6→VGADICT.WL1VGAGRAPH.WL6→VGAGRAPH.WL1VGAHEAD.WL6→VGAHEAD.WL1
- 교체 후
WOLF3D.EXE를 다시 실행하면 게임이 정상 동작함 - DosBox 기본 화면은 1992년에 사람들이 본 원래 화면과 다름
- VGA 프레임버퍼는 320x200
- CRT 모니터는 4:3 화면비라 출력 시 세로로 늘어나 보였음
- DosBox 설정에서
[render]의aspect=false를aspect=true로 바꾸면 화면비 보정이 적용됨 - 화면비 보정까지 적용하면 Wolfenstein 3D가 당시 CRT 표시 방식에 가까운 모습으로 실행됨