2009년 11월 13일 금요일

오랫만에 구글 블로그에 들어와보니

사무실에서 무심코 블로그를 접속했습니다.

까만화면에 흰색 글씨... 눈에 잘 안띄더군요. 나중에는 눈이 아플정도...
집에서는 해상도가 높은 대형 CRT모니터라서 문제 없었는데 17인치 LCD 모니터로 보고 있자니 시야가 흐려져옵니다. 큰 화면에서는 전혀 문제 없었는데 작은 화면에서는 흰색 글씨가 희끗희끗하네요.
까만 바탕에 흰색 글씨를 좋아하다보니 사무실 간판도 그렇게 디자인했다는...
할수 없지요. 이미 디자인된건데 폰트 크기나 굵기라도 조절해서 잘 보이도록 해야겠습니다.
그동안 바빠서 에뮬 수집을 못했는데 다시 시작해야겠습니다.
처음에는 제가 좋아하는 구글에서 검색도 안되더니 글 몇개 올리니까 구글에서 검색이 되네요. 첫화면에 제 블로그 게시물이 뜬 것을 보니 흐뭇합니다. 분발해서 블로깅좀 해야겠습니다.

요즘 루저 발언이 문제가 되고 있네요. 물론 저도 루저입니다. 제 친구들도 대부분 루저네요.
상황을 모른 상태에서 이병헌이 나온 루저 패러디물을 보고 이게 뭐야, 애들이 드라마 보고 또 무슨 이슈를 만들어냈구나 했는데 루저를 검색해 보니 심각한 수준이네요. 홍대의 이도경이라는 학생이 큰거 터트렸네요. 저는 오히려 이 학생이 앞으로 살아갈 날이 걱정됩니다. 우리나라 남성들 대부분이 180Cm를 넘지 않는 상황에서 앞으로도 반발이 많을 것으로 예상됩니다. 한 여학생이 한순간의 말실수로 친구 잃고 직장 잃고 학교도 잃게 되었네요.

과로했더니 감기에 걸린듯 머리가 아프고 기침이 납니다. 신종 인플루엔자가 아닐까 걱정했는데 신종플루 증상은 아닌듯 합니다. 아직 쌩쌩한 30대이니까 걸려도 죽지는 않을 겁니다.

2009년 5월 4일 월요일

Hybrid Mame Rom (전천후 마메롬)

하이브리드 마메 롬을 만들어 보자.

Hybrid Mame Rom?
이 이름은 개인적으로 부르는 이름이지 통용된 것은 아니다.
여러 버전을 돌리기 위해서 특별히 만들어진 롬이다. All Version Support Mame Rom 정도로 생각하면 된다.
Mame Rom을 수집하는 사람은 Emulator가 최신 버전이라고 무조건 좋은게 아니라는걸 알 것이다.
개발자들의 필요에 따라서 롬셋 이름을 바꿀수도 있고 빼버릴 수도 있다. 또한 자식롬을 만들어 롬파일 이름이 바뀔수도, 삭제될 수도 있다. 따라서 전에는 잘 실행되던 것이 실행이 안될 수도 있는 것이다.
그래서 이 하이브리드 마메롬은 롬파일 하나에 이전버전까지를 모두 포함시키는 것을 의미한다.
업데이트 롬을 받아서 단순히 Rom Center나 Clrmame 등의 롬관리 유틸로 병합시킨 롬은 최신 버전에서만 동작하지 이전 버전에서는 동작하지 않는다. 새로 덤프되어 롬셋 이름은 같은데 CRC등이 다르기 때문이다. 한단계 전의 에뮬레이터에서는 miss rom이 많지 않을 것이다. 어짜피 롬셋은 크게 바뀌지 않았고 CRC로 판단되기 때문이다.

우선 만들기 위해서는 에뮬레이터에서 마메롬을 불러들이는 방식을 알아야 한다. 0.60 버전대의 롬까지는 롬파일 이름, 롬셋 이름, CRC가 모두 일치해야 한다. 그 이후 Mame Plus가 나오는 버전부터는 Mame32계열에서 롬파일 이름, 롬셋의 CRC만 일치하면 된다.
0.60을 언급한 이유는 0.34b4 버전부터 CRC32를 지원하긴 하지만 CRC가 00000000 인 것들은 롬셋 이름이 정확히 일치해야 하기 때문이다. 0.34b4 이전 버전은 롬셋 이름이 어짜피 일치해야 하므로 버전 별로 따로 수집하는 것도 괜찮은 방법이다. CRC 00000000으로 적용되어 롬셋이 같아야 하는 에뮬레이터는 0.34b7 버전부터 0.34rc1까지다. 해당 구간에는 20여개의 CRC 00000000인 롬들이 있다.
롬을 판단할때는 MameUI보다는 Mame Plus가 보기 편했다(icon 설정을 제대로 해주었을 경우)
최근의 Mame32 Plus에서는 롬셋을 CRC로만 판단이 가능하다. 다만 에뮬레이터에서 요구하는 롬 셋 이름과 롬 파일 안의 롬셋 이름이 일치할 경우 먼저 처리를 한다. 롬셋 이름이 같은데 CRC가 다를 경우 해당되는 CRC를 찾아서 실행한다. 최종적으로도 일치하는 CRC를 못찾을 경우 CRC가 다르다는 에러메세지를 보여준다.

자 여기서 알아야할게 있다. CRC만 일치하면 되므로 Mame Plus는 롬파일 안의 모든 롬셋을 풀어서 찾는다. 즉, zip파일 안에 디렉토리가 있어도 상관없다. Mame Plus는 Windows에서 실행되므로 디렉토리 이름의 길이에는 크게 문제되지 않는다. 하지만 도스를 염두에 두어서 8 X 3 파일명을 사용하는게 좋다. 또한, 어짜피 롬셋 이외에는 인식을 하지 않으므로 설명을 위해서 txt파일을 넣어도 된다. 분명히 다른 파일인데 롬셋 이름이 같을 경우 zip파일 안에 저장이 되지 않는다. 이럴 때는 zip파일 안에 다음과 같이 디렉토리를 만들어서 버전 별로 구분해 보자.

최신 에뮬레이터에서 쓰이는 232-m1.bin 파일과 같은 역할을 하는 kof97_m1.rom이라는 롬셋은 이름이 같은데 0.34b6과 rc1에뮬레이터에서 다르게 사용된다. 이 파일들을 zip파일 안에 그냥 넣을 경우 중복된 파일이 있다. 덮어쓸까요? 라고 묻게 된다. 따라서 위와 같이 중복된 이름의 롬셋을 버전별로 디렉토리를 만들어서 넣어 준다. 위와 같은 경우 용량부터가 틀리므로 쉽게 구분이 가능하지만 용량까지 같은 경우 Suzi CRC로 검사를 해본다.

그런데 문제가 있다. 0.34b4 이전버전의 에뮬레이터(CRC32는 0.34b4 부터 지원)는 Dos용 에뮬레이터도 있는 버전이므로 CRC만을 가지고 롬을 판단하지 않는다. 따라서 0.34rc1의 kof97_m1.rom이 필요한 에뮬레이터에서 먼저 롬파일 안의 0.34b6 폴더의 kof97_m1.rom을 읽어 들여서 에러를 뱉을 수도 있다.

이 경우 방법이 두가지 있다.
1. 중복되는 해당 파일들을 압축해서 넣는것. 압축하여 exe로 만들기 해서 롬 파일 안의 kof97_m1.exe를 실행하여 압축을 푼 후 다시 롬파일 안에 넣으면 된다.
2. 중복되는 해당 파일의 이름에 버전을 넣는것. kof97_m1(0.34rc1).rom 등으로 바꾼다. 이름이 길어지므로 압축방법을 추천한다. 8자리 이상의 파일 이름은 도스에서 보여지지 않기 때문이다.

위와 같이 변경 후 해당 에뮬레이터를 돌릴 때 압축을 풀거나 바꾸어 주어야 한다. 물론 최신 버전의 Mame Plus에서는 압축하거나 이름을 바꾸지 않아도 알아서 인식된다.

0.60버전 이후로는 에뮬레이터에서 CRC가 00000000인 것은 알아서 No Good Dump 등으로 처리해 주므로 롬셋 이름은 상관이 없었다.
개인적으로는 아래와 같은 롬파일을 선호하고 있다.

롬파일이름(추가버전)[CRC32]
romset.rom(0.133u1)[12345678]

다른 방법으로는 아래와 같이 Mame32부터 롬폴더를 여러개 지정 가능한 것을 이용하는 것이다. Window에서만 사용할 거면 버전별로 폴더를 추가하는 것도 괜찮지만 최신 버전에서는 어짜피 CRC로 인식하므로 롬파일 하나에 폴더를 만들어서 다 넣어도 된다. 하지만 Dos에서는 다중 폴더가 되지 않으므로 버전별로 롬 폴더를 추가하는 것은 되지 않는다.

구버전 에뮬레이터에서 구동가능한 롬을 만드는건 노가다라고 보면 된다. 롬 유틸리티로도 쉽게 병합하기가 힘들며 구분도 잘 되지 않는다. 오래된 롬이라고 해서 포기하지는 말자. 대부분의 롬은 다른 롬파일에 들어 있거나 롬셋 이름이 바뀐 것들이 대부분이다. 나야 물론 구버전부터 모아왔기 때문에 손쉬웠지만 구버전 에뮬레이터에 필요한 롬셋은 대부분 최신버전에도 들어있다.

아래의 이미지는 frogger2.zip 롬에 필요한 롬셋을 찾기 위한 것이다. (Mame32 0.35b2에서 필요한 롬셋 epr-1037.1h)
ArcadeStuff 사이트에서 CRC로 검색을 해보면 각각의 게임에 다른 이름으로 들어 있음을 알 수 있다.

frogger.607 Frogger (Moon Cresta hardware)
frogger.607 Frogger (Sega set 2)
frogger.607 Frogger (Sega set 1)
frogger.607 Frogger
frogger.607 Frogger (Falcon bootleg)
frogger.607 Frog
k.bin Frog (Galaxian hardware)
하지만 아쉽게도 arcadestuff 사이트는 망하고 이미 없다.

MameWorld MAWS에서도 가능했으나 현재는 열리지 않는다.

트래픽으로 인하여 이곳으로 바뀌었다.
특정 사이트에서 찾을 수 없다면 구글링을 이용하면 된다.

해당 롬파일을 찾을 수 없으면 사이즈가 똑같은 다른 파일을 이름을 똑같이 바꾸어서 해당 게임이름의 Zip파일 안에 넣으면 CRC가 맞지 않는다고 나온다.
Expected CRC를 복사한 뒤 구글 사이트에서 검색하면 해당 롬파일이 어디에 어떤 이름으로 있는지 나오게 된다.

여기까지는 폴더를 이용한 방법이었다.

공식(DOS) 및 Mame32 에뮬레이터의 버전 0.34b4부터는 부분적으로 CRC를 이용한다. 눈치 챘겠지만 Zip 파일 안의 이름이 틀려도 인식이 된다. 일단 해당 zip파일의 모든 파일을 검사한 뒤 없으면 CRC를 검색하여 찾는 듯 하다. 다만 완전히 CRC로만 인식되기 위해서는 버전이 좀 더 높아져야 한다. 0.34b4에서는 bad dump rom의 이름이 같아야 인식한다. 비록 CRC가 같지는 않지만 bad dump rom의 crc를 인식하여 Found but No good dump 등의 메세지를 띄운다. 0.63버전(대충 이정도) 정도 이상 되면 bad dump rom도 CRC로 알아서 인식되는 듯 하다. 간혹 이름이 꼭 같아야 하는 것도 버전 당 서너개쯤 존재한다.

예를 들어 0.101버전에 aaaa.b 라는 롬이 이전 버전에도 있었고 같은 이름의 롬파일이 0.102 버전에도 새로 나왔다면

aaaa.b(0.101)
aaaa.b(0.102)

이런 식으로 이름을 막 붙여도 인식이 된다.
간단히 수작업을 거치면 어떤 버전에서 나왔는지 한눈에 알아볼 수 있다.
버전업할때마다 새로 나오는 롬파일의 수를 감안하면 간단하더라도 그 작업량을 무시할 수는 없다.

이런 작업을 거치면 0.101버전에서도 실행 가능하고 0.102버전에서도 실행 가능하게 된다.
이름을 바꿔서 zip 파일 안에 모두 넣어 주면 된다.

이런 작업을 CRC로 인식이 가능한 0.34b4부터 현재까지 나온 버전까지 모두 수정해주면 어떤 버전에서도 실행이 가능한 전천후 마메롬이 된다.

0.34b4 이전 버전에서는 CRC를 사용하지 않으므로 해봤자 인식되지 않지만 이름뒤에 추가시킨 것을 빼버리면 간단히 실행이 가능해진다.


이 게시물에서 명명한 단어들

abc.zip - 집파일, zip파일, 롬파일 또는 롬이름

romset1.rom - 롬셋1
romset2.rom - 롬셋2
....

Checksum - 0.34b3까지 사용되는 에뮬레이터 내의 Checksum
CRC32 - 0.34b4부터 사용되는 CRC32

급하게 쓰느라 버전 등의 혼동이 있어 완벽하지는 않지만 2011년 12월에 수정을 약간 하였습니다

에뮬레이터에 대한 생각

몇년전부터 한국에도 에뮬 게임이 활성화 되어 있다. 그 전에 에뮬 게임은 아는 사람만 아는 분야였다. 에뮬레이터는 PC 또는 다른 시스템에서 돌아가게끔 하는게 목적이다. 즉, 오래된 시스템을 다른 시스템이나 새로운 시스템에서도 가상화를 적용하여 실행되도록 하는 것이다.
에뮬 게임도 마찬가지다. 이제는 볼 수 없는 오락실 게임이나 구형 콘솔 등을 컴퓨터에서 실행되도록 만들어주는게 게임 에뮬레이터다.
에뮬레이터는 게임에만 있는 것이 아니다. 오래된 산업용 컴퓨터나 PC에뮬레이터도 있다. 기업체에서 시스템이 바뀌면서 예전 시스템에서 사용되던 프로그램을 사용하고자 하는 경우에도 쓰인다. Windows 7에 사용되는 XP 가상화 머신도 하나의 에뮬레이터라고 보면 된다.
마메 에뮬레이터는 한 이탈리아 사람이 예전 게임을 보존하기 위해 만들어졌다. 물론 플레이 가능해야겠지만 목적은 예전 게임을 발굴,구현해서 돌아가게끔 하는데 있다. 흉내를 내는 것이다.
이 흉내를 내주는 에뮬레이터는 불법이 아니다. 다만 롬이 문제가 되는데 출시한지 오래되어 현재 상업적으로 이용되고 있지 않아서 저작권자가 문제삼지 않을 뿐이다. 에뮬레이터 개발자들도 출시한지 3년이 지나지 않으면 덤프하지 말라고 주의하고 있다.
한데 국내 유저들은 그렇게 느끼지 않는 경향이 많다. 에뮬레이터 게임을 하면서 오래된 향수를 느끼기 보다는 (물론 향수를 느껴야 합법인건 아니지만...) 돈없어서 해당게임 무시하다가 공짜라는 이유로 즐기는 경우가 많다. 이런 이유 때문에 국내 오락실에서 인기 있었던 몇몇 게임만 공유가 활발하고 그 외에는 전혀 활성화되어 있지 않다.
물론 국내에도 에뮬레이터와 롬을 수집하는 사람이 있을테지만 아직까지는 보지 못했다. 에뮬레이터 전문카페? 구하기 쉬운 자료들만 있는게 태반이다. 주로 보편적이고 인기있는 자료만 취급한다.

그에 반해 외국 수집가들은 정말 대단하다. 롬을 수집하는 사람은 게임을 하지 않는다. 다만 모을 뿐이다. 하루의 일과중 남는 취미 시간에 롬을 관리하고 모으는데 온 시간을 쏟는다. 수집하는데 시간을 다 써버려서 정작 게임을 즐길 시간이 없다. 게임을 할것도 아니면서 뭣하러 모으냐고 물으면 아마도 이렇게 대답할 것이다. 지금은 볼 수 없는 게임들을 난 가지고 있기 때문에 즐겁노라고... 이 자료만 있으면 예전의 향수가 새록새록 떠오른다고... 외국인들 중에도 대부분은 수집을 위한 자기만족이다. 그냥 버전별로 모두 모으는게 목적이다. 깔끔하고 완벽하게 모으는게 목적인 사람들도 많다.
요즘은 통신이 발달해서 이 사람들이 모은 자료를 몽땅 받을수도 있다. torrent로 풀버전 롬이 돌아다닌다. 풀버전을 쉽게 내려받아서 혼자 기뻐했는지 생각해보아야 한다. 마메 최신버전 풀셋 롬? 한번 구버전 에뮬레이터에서 돌려보길 바란다. 그동안 롬셋이름이 바뀌고 새로 덤프되어 절반이상 에러가 날 것이다. 특히 초창기 버전의 에뮬레이터에서는 거의 돌아가지 않는다. 에뮬레이터가 최신이라고 모두 좋은건 아니다. 나에게는 예전 개발자들의 땀이 서려 있는 구버전 에뮬레이터에서도 향수가 느껴진다.

한국에도 10년이상 Daves 시절부터 롬을 수집한 사람들도 있다. 인터넷망이 없던 시절 전화선을 연결해서 모뎀으로 인터넷을 사용하여 롬을 구하면 뛸듯이 기뻐했었다. 물론, 이 정체불명의 에뮬레이터와 롬들을 주위 사람들에게 자랑도 했었다. 마메를 본 사람들의 반응은 이 게임들이 컴퓨터로 실행된다니 대단하다라고 했지, 공짜로 플레이할수 있어서 대단하다고는 하지 않았다.
학생이었어도 일찍부터 돈벌기 시작해서 전화비는 감당할 정도가 되었다. 마메를 알고부터 0.1버전부터 업데이트롬을 모두 모아왔다. 도중에 하드가 고장나서 식겁했지만 시디롬이 남아있어서 복구가 가능했다. 지금은 구할래야 구할수 없을 것이다. 불법이라는 것은 눈에 가시가 박히도록 보아왔지만 공짜라는 불순한 생각을 가져본 적은 없다. 내가 롬을 모아도 현재 상업적으로 이용되는 것이 아니기 때문에 원 저작자에게 피해를 주지는 않았다. 즐기기 위해서는 돈을 써야 한다.

한국 사람들은 불법 유저가 많다. 최근의 NDS부터 PSP까지 돈을 내고 사용하는 사람은 많지 않다. 나도 NDS기기가 있지만 카트리지만 사놓고 플레이할 시간이 없어서 먼지만 내려앉고 있다. NDS 국민게임인 말랑말랑 두뇌와 동물의숲 밖에 없지만... NDS 에뮬과 롬은 출시한지 얼마 되지도 않아서 나왔다는 점에서 이미 원래 목적을 상실한 것이 분명하다. NDS 롬은 오래된 것을 보존하고 향수를 느끼기 보다는 공짜 플레이를 위한 목적이 강하다.

진짜 게임을 하고 싶다면 정품을 구매하라고 말하고 싶다. 특히 최신 게임은 더욱더 그래야 한다. 에뮬레이터 게임은 공짜로 즐기기 위해서가 아니라는 말을 하고 싶다.
새벽에 깨는 바람에 다시 잠을 못이루고 블로그에 글을 쓴다. 도중에 잠을 깨면 다시 잠을 못이루는 체질이라 고생을 많이 하는 편이다. 이런 날은 하루종일 저기압인 상태가 많다.