컴퓨터와 잡동사니 자료

정말로 윈도우95/98용 게임을 64비트 윈도우에서 실행하는 방법은 가상머신 말고는 없단 말인가.

창고관리자 K66Google 2017. 12. 18. 16:51

2017년이 얼마 안 남은 지금.

내 머릿속을 흔드는 주제가 있었다.


정말 64비트 윈도우에서는 가상머신 말고는 윈도우95/98용 게임을 실행할 수 없는 것인가?



일단 그냥은 불가능한 것이 맞다. 이러한 프로그램들은 16bit 기반이기 때문이다.

32bit 운영체제라면 NTVDM이라는 추가 기능 설치로 가능하지만, 64bit에는 그런거 없다.




 

 

(▲ 이런 식으로 32bit 윈도우에서는 NTVDM 기능을 추가할 수 있게 되어있지만 64bit 윈도우에는 없다.)




(출처: http://www.atmarkit.co.jp/ait/articles/1007/29/news109.html )

애초에 64bit 운영체제에서는 64bit와 32bit 프로그램의 호환만 가능하다고 한다. 

'가상 86모드' 라는게 64bit에서는 지원되지 않아서 그런 모양이다.


하지만 그것이 정말 불가능한 것인지, 나는 구글링이라도 해보기로 하였다.

이제부터 그동안 조사했던 내용들을 소개하도록 하겠다.



1. NTVDMx64

https://github.com/leecher1337/ntvdmx64


32비트에서만 작동시킬 수 있었던 NTVDM을 64비트에 이식시키는 프로젝트다. 개발 소스는 NT 4.0의 유출된 코드를 가지고 작업한 모양이다. (자세한 내용은 OpenNT 라고 검색해 볼 것)

Microsoft와의 저작권 분쟁이 있으므로 개발자 본인은 컴파일해놓지 않았지만, 다른 사람이 컴파일시킨 버전을 올려놓았다. (여기)


컴파일 버전의 압축파일을 받는 순간부터 크롬과 윈도우 디펜더가 바이러스 타령을 하면서 ldntvdm.dll 을 지워버려야 된다고 으름장을 놓는다. 이미 내가 시험해봤지만 그런 의도를 가진 프로그램은 아니었다. (바이러스 의혹에 대한 개발자의 답변은 여기에 있음)

제어판에서 삭제도 자유롭게 할 수 있었다.


아무튼 인스톨 배치파일을 실행하니 윈도우10이 재부팅하면서 추가기능을 깔았다.

자, 실행은 가능할 것인가?




될 리가 없었다.

또한, ldntvdm.dll로 인해 온라인 게임 실행 시에 보안툴(Xigncode3 등)이 게임을 강제종료 시키는 문제도 발생하니 그냥 삭제하기로 하였다.

NTVDMx64는 제어판의 프로그램 추가/제거에서 삭제할 수 있지만, 그 후에도 ldntvdm.dll 파일이 삭제되지 않고 존재한다.

SysWOW64 폴더 내의 dll은 쉽게 삭제할 수 있지만, System32 폴더 내의 dll은 윈도우10마저도 사용하고 있으므로 Unlocker로 삭제하려고 들면 블루스크린이 뜬다.

따라서 나는 윈도우10 설치 USB로 부팅한 후 '문제 해결' - '명령 프롬프트'에 가서...


diskpart

list volume     [여기서 C드라이브가 C드라이브로 인식되는지 확인.]

exit

c:     [C드라이브로 진입]

cd C:\Windows\System32

del ldntvdm.dll 


마지막 명령어 실행 후에도 아무런 오류 메시지도 없으면 삭제된 것이므로 종료하고 재부팅.






2. Win3mu

공식 페이지 : http://www.win3mu.com/

개발자의 제작일지 : https://hackernoon.com/win3mu-part-1-why-im-writing-a-16-bit-windows-emulator-2eae946c935d


윈도우3.1 프로그램들(16bit)을 현대 윈도우(32bit)에 돌아갈 수 있게 바꾸는 프로젝트도 있었다.

그러나 개발자가 중간에 때려친 모양이다. 더 이상 진전이 없다가... 2018년 여름 쯤에 오픈소스 선언을 하면서 소스코드가 개방되었다.

깃허브의 한 개발자가 소스코드 수정없이 빌드해놓은 설치 파일을 깔고 삼국지5 실행파일을 넣으니 고작 7kb 밖에 안 되는 파일이 생성되고 실행하니까 무슨 dll이 없다고만 뜬다. 될 리가 없었다.



아무튼 조사를 계속하던 중, 리눅스에서는 Wine 이라는 프로그램을 이용해 윈도우용 프로그램들을 실행시킬 수 있다는 정보를 얻게 되었다...




3. BoxedWine

https://sourceforge.net/projects/boxedwine/


그래서 다음에 찾아낸 것은, 윈도우상으로 Wine을 이식하는 프로젝트였다.

(Wine은 윈도우용 프로그램을 리눅스에서 돌리게 해주는 프로그램이라고 한다.)

실제로 개발자가 집어넣은 샘플 게임은 잘 실행이 되었다. 그러나 샘플 게임 말고는 실행을 하려고 하지 않아 억지로 헥스 수정을 한 뒤 다른 프로그램들을 테스트해보았다. 하지만 기대한 내가 바보였다.


위 프로그램으로 삼국지4PK를 구동했을때는 윈도우95가 아니라고 뜨면서 실행이 되지 않는다.

5PK는 256색이 아니라고 뜨면서 실행이 되지 않는다.

그것도 한글이 모두 깨진채로 말이다.


결국, 될 리가 없었다.




4. WineD3D

https://fdossena.com/?p=wined3d/index.frag


다음으로 찾은 것은 WineD3D를 기반으로 하여 Direct 1~11을 OpenGL로 바꾸는 프로젝트였다. Wine에서 영감을 얻은 것으로 보인다.

삼국지4PK Win95판의 실행파일 헥스 안에는 ddraw 라는 문자열이 들어갔으므로, 잘하면 실행까지는 가능할지도 모른다는 생각이 들었다.

원래는 NTVDMx64와 조합이 되야만 실행이 되는걸로 파악하고 있었는데, NTVDM을 설치했다가 삭제해도 실행이 되는 걸 확인하였다.

이로써 삼국지4 Win95판 실행파일은 32비트로 제작되었다는 것을 알 수 있다. 그런데 왜 윈10에서는 지금까지 실행을 할 수 없었던 걸까?


(위 스샷은 800x600 해상도로 실행했을때의 타이틀 화면.)


안내에 따라 삼국지4PK 실행파일의 헥스를 수정하고 dll 파일을 게임 폴더에 넣은 뒤 게임을 실행하자 일부가 검은화면인 상태로 실행되었다.

Alt + Tab 만 누르지 않으면 맵 화면까지는 들어갈 수 있었다. 

다만, 제목 표시줄이 없고 위에처럼 화면이 짤리는 관계로 실제 플레이는 불가능한 줄... 알았는데!



이렇게 Alt + Space + M (창 이동 단축키) 를 누르고 게임화면을 키보드 방향키로 북서쪽 끝까지 옮긴 다음에 오른쪽으로 한 칸만 띄우면 화면이 짤리는 비중이 크게 감소하면서 게임이 사실상 가능해진다.

(단, 이러한 수법은 더블 모니터부터는 불가능하다. 또한 절대 바탕화면이나 게임 밖의 화면을 클릭하면 안 된다! 게임으로 돌아갈 수가 없어서 강제종료해야 한다.

 그리고 옵션에서 동영상 OFF로 설정하지 않으면 동영상 나오고 난 뒤 검은화면이 되어서 게임을 진행할 수 없으므로 주의.)

또한, WineD3D 버전은 3.1 버전을 사용해야 한다. 3.2 버전부터는 렉이 걸리면서 제대로 동작하지 않으니 쓰지 말것.



후에 천상기 풀컬러 dll (출처는 여기. 그것도 ddraw.dll을 수정하는 방법이다.) 파일을 대신 넣었더니 타이틀 화면은 잘 뜨는데 맵화면에서 튕긴다. 아무래도 WineD3D의 ddraw.dll와는 다르게 설계된 모양이다.


그러나 삼국지5PK는 ddraw를 사용하지 않아서 이 방법을 써먹을 수가 없고 (아마도 DirectX가 아닌 WinG 방식으로 만든 것이 아닐까 추정) 대항해시대3 WIN95판은 타이틀 화면부터 검은 화면으로 나와서 게임 진행이 불가능하였다.


결국, 이 방법도 모든 게임에 통하지는 않았다.




4-2. 기타

dxgl : https://www.dxgl.info/Downloads/ 

dgvoodoo : http://dege.freeweb.hu/ 

winevdm : https://github.com/otya128/winevdm

DDrawCompat : https://github.com/narzoul/DDrawCompat


dxgl, dgvoodoo 둘 다 삼국지4PK 실행과는 관련없었다. 

winevdm은 삼국지4PK 실행파일(32bit)과는 관련없고, 삼국지5PK 실행파일(16bit)을 otvdm.exe에 드래그하니 256 컬러모드로 실행하라는 문구가 떴다. otvdm.exe를 256 컬러로 변경 후 실행하면 오류만 뜨고 강제종료되서 실행불가. (2017년 말 기준)

DDrawCompat로 삼국지4PK 실행시 오프닝부터 깨져서 나오므로 역시 패스. (2017년 말 기준)






5. Windows Subsystem for Linux (WSL)

https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux

WSL은 윈도우10 프리뷰 버전에서 등장했다가 레드스톤3 64bit에 정식으로 들어온 기능인데, 윈도우10 상에서 리눅스(우분투) 명령어를 사용하게 해 준다는 기능이다.

그렇다면 리눅스 프로그램인 Wine도 돌릴 수 있다는 소리지만, 안타깝게도 WSL은 64bit ELF(명령어?)만 지원해서 32bit용 Wine을 돌릴 수 없다고 한다. (출처)

그리고 마이크로소프트 역시 32bit 바이너리를 지원할 계획도 없다고 한다. (출처)


32bit용 Wine을 돌리지 못하면 16bit 프로그램 실행도 불가능하다.

또한 삼국지 실행 시 256색 타령, 윈도우95 타령, CD를 집어넣으라는 타령을 할 때는 어떻게 대처를 한단 말인가? 리눅스에다 데몬을 깔아놓을 수는 없지 않은가...

따라서 이 방법도 불가능하다.






* 결론

아무리 인터넷을 헤집고 다녔지만, 끝내 제대로 된 방법을 찾지 못했다.

따라서 정말로 64비트 윈도우에서는 가상머신 말고는 윈도우95/98용 게임을 실행할 수 없는 것인가? 라고 묻는다면...


이러한 게임들은 그냥 VMware에 윈도우98 설치하고 데몬 3.47 깔아놓은 뒤에 마운트해서 설치하고 플레이하는 수 밖에 없다.

라는 말밖에 나오지 않는다...


이것 말고는 더 이상 할 말이 없다.. 그럼...



(...그리고 약 2년 후인 2019년 11월, DDrawCompat과 winevdm은 마침내 삼국지4PK와 삼국지5PK의 윈도우10 64비트 구동에 성공하게 된다. 관련 게시물은 링크를 참조.)