2015년 4월 26일 일요일

MAME에 대한 궁금증

시간이 날 때에 아무 생각 없이, 부담 없이 즐길 수 있는 게임으로 MAME 만한 것이 없다.

MAME는 Multiple Arcade Machine Emulator의 약자로 업소용 게임기의 게임 에뮬레이터이다.

대부분 과거 십수년이 지난 게임들이기에 저작권에 대한 문제도 그리 민감하진 않고 (그렇다고 저작권이 없다는 뜻은 절대 아니다. 그러기에 게임 하나마다 게임에 대한 사용권리를 가지고 있는지 주의를 환기시키는 문구가 포함되어 있다.),
플레이 시간이 비교적 짧아서 부담도 적다.

그런데 그 많은 게임들을 대체 어떻게 에뮬레이팅을 하는 것일까?

게임기에 대한 큰 분류가 있어서 동일한 기종에서 돌아가는 게임들이 아주 많고, 그런 게임기들 몇가지를 에뮬레이팅 해 주면 되는 걸까?
설마 각 게임마다 각각 에뮬레이팅을 해 주는 것일까?
간혹 롬파일이 없다는 문구도 보이던데, 그럼 롬파일에 대한 정보도 모두 가지고 있는 걸까?

딥스위치에 대한 정보는 어떻게 알고 있으며, 입력 장치의 수정은 어떻게 하고 있으며, 자동연사기능은 왜 없어진걸까?


궁금증은 많지만, 의문을 풀고 싶은 욕구는 적었던가 보다.
수년 이상을 가졌던 의문을 풀지 않고 그냥 지내 온 것을 보니.....

그래서....마음만 먹으면 얼마든지 구할 수 있는게 소스코드이니 소스를 구해서 저런 궁금증 만이라도 풀어보기로 했다.


최신 소스코는 다음에서 받을 수 있다.
http://www.mamedev.org/release.html

0.160b인데, MAME와 MESS의 소스코드가 묶여 있다. (대략 55MB ~ 79MB)

살펴보니, 이미 다운로드 받았던 0.149 소스가 있어서 이것을 풀어 보았다.

MAME 소스의 디렉토리 구조

대략적인 소스의 디렉토리 구조는 위와 같았다.
0.149 버전에서도 MAME와 MESS의 소스가 함께 존재했다.
에뮬레팅에 대한 핵심적인 부분은 emu 폴더에 있지 않을까 싶다.


소스가 너무 방대하기에 소스인사이트를 이용해서 살펴보기로 하고
프로젝트를 만들어 파일들을 프로젝트에 등록하고 싱크로나이즈 해 주었다.

전체 소스들이 정렬되어 나타난 브라우징 창이 다음과 같았다.

MAME의 소스들
이 창에서 7번째부터 익숙한 이름이 보인다.
1942.*, 1943.*
캡콤의 유명한 슈팅게임들이다.
두개의 C 파일과 하나의 헤더 파일.
drivers라는 폴더와 video라는 폴더, includes라는 폴더에 각각 위치하고 있음을 볼 수 있다.

잠깐 살펴보니 drivers폴더에 있는 내용이 알아보기 쉽다는 것을 알게 되었다.


잠시 MAME를 직접 구동해서 게임을 하나 골라서 해 보았다.

슈퍼 보블보블

우리에겐 보글보글로 알려진 게임인데, MAME에서의 이름은 Super Bobble Bobble이다.
윈도우 타이틀바에 표기된 [sboblbob]가 소스 파일의 이름일지 모르겠다는 생각이 들었다.
하지만 찾아보니 그런 파일은 없었다.

조금 더 찾아보니, Bublbobl.c(drivers 폴더)라는 파일에 다음과 같은 부분이 보인다.

보글보글 게임에 대한 매크로

위 소스의 밑에서 두번째 줄을 보면,
GAME( 1986, sboblbob,   bublbobl, boblbobl, sboblbob....
라고 되어 있다.

그리고 GAME이라는 매크로는 다음과 같이 정의 되어 있다.
PARENT가 보글보글(bublbobl)인 게임의 몇가지 버전들이 위와 같이 주~욱 나열되어 있는 듯하다.


이렇게 보니 MAME는 엄청난 노력이 들어간 에뮬레이터였다.
처음의 시작부터 현재의 모습까지 오는 과정에는 엄청난 노력과 발전이 있었음을 미루어 짐작할 수 있다.
아마도 지속적인 발전을 해 오면서 공통되는 부분을 묶고, 기능을 공유할 수 있도록 일반화 하는 과정이 있었을 것이며, 그럼에도 각 게임 하나 하나의 에뮬레이션도 직접 손대야 하느 번거로움까지....


아주 아주 맛보기만 보았지만, 시간이 나면 나머지 의문들도 하나 둘씩 파헤쳐 볼 수 있기를 바래본다.

댓글 없음: