DOSBox

dosbox_start_full.jpg

오픈소스 MS-DOS 에뮬레이터. 깨알같은 KDE3

1 개요

말 그대로 DOS(특히 MS-DOS)를 최신 운영체제에서 맛볼 수 있도록 돌려주는 에뮬레이터이다. 지원대상은 Windows(10도!), OS X, 리눅스의 대표적인 운영체제 3종 전부다. 심지어, 업데이트는 안되고 있지만 Solaris, BeOS 버전도 있다. 따라서 현존 대부분의 OS를 지원한다고 볼 수 있다. 라이선스는 GPL. 최신 버전은 2010년에 출시된 0.74. 후술된 SVN 빌드 때문인지 정식 버전은 6년째 업데이트가 되고 있지 않는 상황.

공식 홈페이지는 원래 유명 개발 플랫폼 사이트인 SourceForge에 있다가 2012년 10월 21일 [1]으로 이전되었다. 국내에 처음 DOSBox가 알려진 건 0.58 이후부터이다. PCjr이 아직 50% 공정인 것을 생각하면 PC-DOS 구현은 무리. SHELL과 ISO도 아직은 완벽호환이 안 된다.

2 존재 이유

Windows Me까진 DOS 7.0이나 8.0[1] 위에서 돌아간다고 볼 수도 있는 운영체제이지만 Windows XP부터는 본격적으로 NT 기반 커널로 완전히 밑바탕까지 바꾸게 되어 기존 MS-DOS용 애플리케이션과의 호환성이 희박하다.[2] 사실 Windows 95부터 도스 호환성이 잘 안 이뤄져서 구형 도스용 소프트웨어를 구동할 경우 문제점이 많은데, Windows 2000/XP가 보급되기 시작하면서는 문제가 더 심각해졌다. 또한 하드웨어 사이의 데이터 전송 프로토콜까지 옛날과는 천지차이로 달라졌기 때문에 MS-DOS나 Windows 9X 계열 OS를 설치하더라도 도스적 시절의 프로그램들이 제대로 돌아가지 않게 되었다.(특히 PCI 사운드 카드)

그런데 이 프로그램은 현재의 우월한 하드웨어를 이용하여 옛날 하드웨어를 통째로 가상으로 구현한다. 덕분에 그래픽 카드부터 (CGA/EGA/초기VGA/허큘리스/S3 Graphics) 사운드 카드 (애드립/사운드 블래스터/미디(MPU-401,MT-32))는 물론, 모뎀까지도 에뮬로 구현하고 있다. 덕분에 당시 모뎀으로 넷플레이가 가능한 게임도 가상 IP까지 만들어서 게임하는 것이 가능하다. 심지어 PC 스피커로 나오는 비프음까지 에뮬레이트하고 있다.(...)

3 기능

기본적으로 도스 시절의 게임을 플레이할 수 있는 환경을 제공해준다. 물론 게임이 아닌 도스용 응용프로그램도 실행시킬 수 있지만 특별한 경우가 아닌 한 거의 게임 구동용으로 쓰이고 있다. 기본 설정이 잘 되어 있기 때문에 메모리를 많이 차지하는 게임이라든지 EMM386이 필요한 게임도 잘 에뮬레이트하여 실행에 거의 문제가 없다. 640kb의 악몽이여 안녕! 다만 autoexec.bat와 config.sys를 건드려봤자 소용없고, dosbox.conf라는 파일을 건드려야 적용된다.
CD 드라이브도 지원하고, 별도의 명령어로 추가해주거나 GUI 메뉴로 실제 드라이브는 물론이고 이미지 파일로도 마운트할 수 있다. 단, CD 오디오 기능을 사용하려면 설정을 더 추가해야한다.

VMwareVirtualBox에서 단순히 가상머신의 역할을 하면서 CPU 커맨드는 네이티브의 것을 그대로 쓰는 것과는 달리 CPU 레벨부터 100% 소프트웨어로 에뮬레이션 하는 형태를 가지고 있다.[3] 따라서, 어떤 환경에서든 어지간한 CPU 성능만 되면 거의 완벽한 호환성을 보장할 수 있다는 것이다.[4] 덕분에 핸드폰에서조차 도스게임을 문제 없이 돌릴 수 있다. 이것은 DOSBox의 베이스가 되는 에뮬레이터인 Bochs의 특성이기도 한데, 그 반대 급부로 소프트웨어적으로 처리되기 때문에 느리다는 단점이 생기게 된다. 또한, 그 호환성조차 CPU나 각종 환경을 프로그래밍하는 수준에 따라 좌우된다는 문제도 있다.

이렇게 확보된 호환성 덕분에 DOS 위에서 돌아가는 윈도우즈까지 설치할 수 있다[5]. 물론 3.1, 3.11, 95만 만족스러운 수준으로 돌아가고 Windows 1.0(...)은 실행 불가, 98 SE는 '실행만 가능'한 수준이다. Windows 95는 도스박스를 자바스크립트를 통해 웹에서도 돌릴 수 있을 정도이다. 링크 윈도우즈 Me(...)도 비공식적으로 부팅(?)에 성공하였다. 다만, 설치중 오류가 발생하여 가상머신에 윈도우즈 Me를 설치하고 데이터를 추출해 도스박스 이미지에 올려주는 식으로 부팅하여 꽤 번거롭다.(...) 애당초 FAT32 시스템 지원의 한계성이 보이는 대표적인 사례라고 볼 수 있다.



DOSBox + 윈도우즈 95 + 디아블로 구동 영상

스타크래프트도 제법 원활하게 돌아가지만 버벅거리는 현상이 좀 많고 DirectDraw와 DirectSound 가속을 꺼야 제대로 돌아간다.

참고로 실제 IPX로 연결되어 있지 않는 컴퓨터에서도 IP 주소를 이용하여 IPX 네트워크를 에뮬레이팅해주기도 한다. 터널링도 해주기 때문에 인터넷 상에 있는 사람과도 플레이할 수 있다.

방법은
1) 서버측과 클라이언트측의 DOSBox 폴더에 있는 dosbox.conf 파일을 메모장으로 열어서 맨 아래의 [IPX] 부분의 ipx=false를 ipx=true로 변경
2) 서버측 PC에서는 DOSBox 내부에서 ipxnet startserver 명령을 입력하고(IPX Tunneling Server started 메시지를 확인)
3) 클라이언트측 PC에서는 DOSBOX 내부에서 ipxnet connect (서버측 PC의 IP주소) 명령을 입력한 뒤에(IPX Tunneling Client connected to server (IP주소) 메시지를 확인)
4) 양쪽 PC에서 IPX 네트워크 기능이 있는 게임을 켠 다음에 IPX 네트워크에 들어가면 된다.

이 때 서버측 PC는 실제로 게임을 플레이하지 않는 제 3자가 DOSBox를 켜 놓기만 해도 된다.

또한 IPX 네트워크 플레이를 지원하지 않는 일부 게임을 위해 모뎀이나 널 모뎀을 에뮬레이팅한다. doxbox.conf에서 설정을 해주고 모뎀의 경우는 전화번호 대신 IP주소를 입력하여 접속하고[6], 널 모뎀은 doxbox.conf를 설정할 때 한쪽에는 nullmodem을, 다른 쪽에는 nullmodem server:상대쪽의 IP주소를 입력하여 연결할 수 있다(서버 쪽에서 먼저 접속하여야 한다).

공식 홈페이지 - [2]

Mdir을 설치하는 걸 잊지 말자. mdir 합체 버전

4 전개

4.1 상업용

상업용으로도 그 높은 완성도가 인정받아, 스팀 이나 GOG 같은 옛날 게임을 온라인으로 판매하는 업체에서 사용하고 있을 정도다. 예를 들어 X-COM 을 다운받으면 DOSBox + 게임 조합으로 미리 세팅된 파일을 설치하게 된다. 덕분에 다운받아 실행하면 좀 어처구니 없는 느낌이랄까... DRM이 걸려 있지 않아서 게임 폴더 통째로 다른 DOSBox나 리얼 DOS 머신(?)에 복사해서 돌리면 아주 잘 돈다. 본격 불법 복제 권장하는 ESD

다만 GOG에서 제공하는 게임의 경우는 자신이 사용할 목적이라면 여러대의 PC에 설치해도 무관하도록 라이선스가 되어있으니 걱정하지 말자.

4.2 핸드폰

iOS용으로도 포팅이 되어 iDOS라는 이름으로 앱스토어에 승인, 판매되었으나 하루도 채 지나지 않아 앱스토어에서 내려진 흑역사가 있다. 당시 올라온 앱을 구매한 사람들은 아무 문제 없이 기동 가능. 포팅된 dosbox 버전은 0.74. 아이패드 버전의 경우에는 만족스러운 해상도로, 유명한 고전 게임들은 거의 문제없이 구동해낸다.

한번 내려졌다가 기본 게임을 추가한 무료 버전으로 다시 올라왔다. 이쪽도 얼마 안가 내려갔는데, 이 땐 버그 잡으려고 개발자가 내렸다는 말이 있다. iPhone Explorer같은 프로그램을 사용하면 도스 게임을 집어 넣어서 플레이 하는 것이 가능하다.

2013년 2월 7일 기준, 유료버전으로 다시 돌아왔다, 하지만 ios 8.3 업데이트에 따라, 서드파티 앱으로 idos의 샌드박스에 접근할 수 없게 되었다, 즉, 게임을 넣을수가 없게 되었다.

안드로이드 버전도 개발 중이다. 현재 최신 버전은 2011년 5월에 릴리즈된 0.25로, 이전 버전들에 비해 어느정도의 속도 향상이 있고, 가상 키패드를 지원해 쿼티 키보드가 없어도 제한적이나마 사용할 수 있게 되었다. 안드로이드 2.2 (프로요) 이상의 OS가 필요하다. 그 밖에 DOSBox 소스를 이용해서 AnDOSBox와 DOSBox Turbo라는 포팅판도 나왔는데, 이 두 버전은 속도는 빠르긴 하지만 유료이다.

국내에는 피처폰으로도 이식한 용자가 있다. 해당 포스팅은 삭제돼서 더 이상 볼 수가 없다.(...)[7]

5 단점

5.1 느린 성능

DOSBox의 가장 큰 문제는 은근히 인풋렉이 있다는 것이다. 특히 사운드 부분에서 랙이 큰데, 마우스 누르면 나는 소리조차 누르고 약 0.5초 정도 있다 뾰로롱 하는 소리를 들을 수 있다. 그래서 일부 유저들은 DOSBox에서 옛날에 게임하는 느낌이 안난다고 구닥다리 머신을 주어와서 플레이하는 경우도 있다. 이외에도 화면이 계속 좀 끊기는 느낌이 난다고나 할까... 에뮬레이터의 태생적인 한계이기도 하며, 처리속도가 극단적으로 올라가거나 하드웨어에 좀 더 의존하는 최적화된 알고리즘이어야만 해결될 듯 하다. 하지만 샌디브릿지 4.5G 시스템에서도 버벅거리잖아? 우린 안될꺼야 아마

5.2 아직까지 부족한 호환성

몇몇 게임의 경우 여전히 호환성 문제로 제대로 실행이 안되고 있다. 예를 들어 극히 일부 게임(특히 VESA그래픽을 쓴다거나 하는 당시의 고해상도 게임 및 해당 게임의 고해상도 모드.)은 실행이 안 되는 문제가 있는데, 공식 홈페이지에 올라와 있는 게임 호환표를 참조하여 비극(?)을 막자.

6 변종

도스박스의 변종 버전으로는 한국 도스박스 카페의 카페지기가 개발하고 있는 SVN 버전이 유명하다. 부두 에뮬레이션을 지원해서 3D 게임을 구동 가능하며, 랜카드 에뮬레이션을 지원해서 이런 저런 걸 설치만 해주면 인터넷도 돌릴 수 있다.[8][9]

SVN 버전이 자체적으로 가진 문제도 많다. 그렇기 때문에, 혹시나 프로그램 실행에 문제가 생긴다면, 순정버전으로 실행하면 해결될 수도 있다.

서드파티 프로그램으로는 이지도스박스와 도스게임런처가 존재한다. 이지도스박스는 실행파일의 마우스 우클릭 등으로 편하게 도스박스를 이용할 수 있고, 도스게임런처는 런처 형식으로 이용할 수 있게 해준다. 다만 이지도스박스는 개발자의 흑역사로 인해 묻혔고 도스게임런처는 게등위에서 홈페이지를 폐쇄시켰기에 문제가 된 저작권 게임들(주로 윈도우 95 게임)을 제외한 DOS용 및 윈도우 3.1 게임만을 대상으로 하여 다시 오픈하였다.

  1. Windows 95는 DOS 7.0, 98은 7.1, Me는 8.0이 내장되어 있다. 그러니까 MS DOS 8.0라는 설치CD가 없다는 단점
  2. 특히 WinXP는 홈 에디선이 아닌 프로페셔널인경우 그룹정책에서 제한되어있다. 물론 제한을 해제하면 되지만 그걸 아는 사람이 적다(...).
  3. 현존 CPU는 8, 16비트 명령어를 '에뮬레이트'만 하고 있는데, 당연히 하드웨어적인 리얼 8, 16비트 명령어를 지원하는 것에 비해 문제가 많다. 인텔아이태니엄 시리즈가 왜 AMD에서 나온 애슬론 x86-64에 짓밟혔는지 상기해보자. 아이태니엄은 32비트 명령어조차 에뮬레이트했다!
  4. 다시 말해서, 윈도 환경에서 DOSBox를 사용하면 x86 CPU에서 x86 에뮬레이터를 돌리는 꼴이 된다.
  5. 이게 무슨 뻘짓이냐고 하겠지만, 실제로 도스기반 버젼 윈도우가 아니면 실질적으로 실행이 불가능한 프로그램들이 있다. 물론 보통 프로그램이라면 굳이 구 버전을 쓸 필요가 없지만, 당시의 게임이라면 이런 형태나 멀티부팅, 버추얼 PC 등이 아니면 돌릴 수가 없다. 특히 8 이후의 윈도우즈는 성능 향상과 맞바꾼 하위 호환성이 크게 떨어져서 이런 식으로 돌리는 방법만이 정상 실행을 보장한다.
  6. 이 입력이 안되는 게임이 몇가지 있는데, 이 때는 (만약 IP주소가 127.0.0.1이라면) 127000000001와 같이 입력해주면 된다.
  7. 정확히 블로그가 폭파되었다.
  8. 물론 도스박스가 에뮬레이팅하는 시스템의 한계와 현재의 웹 환경 때문에 원활하게 돌리는 것은 힘들다. 특히 한글인터넷 익스플로러 4.0 이상의 버전과의 상성이 매우 안좋아 그림이 죄다 깨져 나온다 근데 영문판은 그냥 나오고 자바스크립트를 꺼야 어느정도 가능해진다.(설치때도 에러 하나 이상은 보게된다). 다른 웹브라우저를 사용하는 것이 낫다(오페라 같이 저사양에 최적화된 브라우저라든가...) 물론 (이메일 클라이언트를 사용하는) 이메일이나 IRC 채팅, 또는 밴티지 마스터 같은 90년대 2D 인터넷 게임을 하려 한다면 큰 무리없이 이용할 수 있다.
  9. 또한 컴퓨터가 무선랜을 사용한다면 네트워크 에뮬레이션은 작동이 안된다. winpcap이라는 패킷 캡처 프로그램을 이용해서 네트워크에 접속하는 방식인데 이 winpcap 자체가 무선랜 패킷 캡처를 지원하지 않는다(정확하게는 지원하긴 하는데 별도의 USB 동글을 연결해줘야 한다. 근데 이게 좀 많이 비싼지라... 802.11n 규격 지원 동글은 100만원이 넘어간다.) 정 안되면 가상 시리얼 포트 드라이버를 깔고 가상 머신에 리눅스를 깔고 ppp 서버를 깔아서 서로 연결해서 전화 접속 형태로 인터넷에 연결하는 매~우 복잡한 방법이 있긴 하다(...)