레이블이 Emulator인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Emulator인 게시물을 표시합니다. 모든 게시물 표시

2012년 4월 21일 토요일

MAME 0.94u4 Compile

이전 작업에서 계속 설명한다.

094u4.dif 파일을 메모장으로 열어보면 mame094u3 위치에 패치가 되는 것을 알 수 있다.

0.94u3에서 작업한 결과물을 다른 곳으로 복사 또는 삭제한 뒤 obj 폴더를 삭제한다.

커맨드창에 cd..을 입력하여 상위 폴더로 이동

ren mame094u2 mame094u3 를 입력하여 폴더명을 바꾸어 준다.

patch -p0 -E <094u4.dif 를 입력하여 패치 실행

cd mame094u3를 입력하여 makefile이 있는 폴더로 이동]

make를 입력하여 컴파일 실행

이로써 0.94버전은 0.94u4까지 모두 컴파일 완료 하였다.

src 폴더 내의 version.c를 메모장으로 열어보면

char build_version[] = "0.94u4 ("__DATE__")";

가 나오는데 "__DATE__" 부분을 당시 날짜로 바꾸어 저장한 뒤 컴파일 해도 무방하나 굳이 그럴 필요까지는 없을 듯하다.


MAME 0.94u3 Compile

이전 작업에 이어서 설명한다.

094u3.dif를 열어보면 mame094u2에 패치가 진행되는 것을 알 수 있다.

그럼 아까 진행했던 커맨드창으로 돌아간다.

cd..을 입력하여 상위 폴더로 이동

ren mame094u1base mame094u2를 입력하여 폴더명을 바꾸어 준다.

obj폴더 및 이전에 생성된 결과물을 다른 곳으로 복사한 뒤 삭제한다.

patch -p0 -E <094u3.dif를 입력하여 패치한다.

cd mame094u2를 입력하여 makefile이 있는 폴더로 이동

make를 입력하여 컴파일을 시작한다.

참고로 0.94u3 컴파일 시 Q9400 CPU,DDR2 4G 컴퓨터에서 약 5분 정도 걸리는듯 하다.

0.94u1 및0.94u2의 경우 10~20분, 0.144u1의 경우 1시간 이상 걸리는듯 했다.


MAME 0.94u2 Compile

위와 같이 0.94u1이 성공적으로 컴파일 완료 되었다.
094u1 컴파일시 4개의 파일(chdman.exe,mame.exe,romcmp.exe,xml2info.exe)이 생성되는데 이것이 컴파일된 결과물이다.
094u1 폴더 내에 obj폴더라는 임시폴더가 생성된 것을 볼 수 있는데 이것을 삭제한다. obj 폴더가 남아 있을 경우 다음에 있을 0.94u2 컴파일 시 오류가 날 수 있다.

094u2.dif 파일을 메모장으로 열어보면

드래그한 부분을 보면 094u1base 폴더가 지정되어 있는 것을 확인할 수 있다.

커맨드창에 cd..을 입력하여 상위 폴더로 이동한다.

커맨드창에 ren mame094 mame094u1base를 입력하여 C:\mame094s\mame094 폴더의 이름을 094u1base로 바꾸어 준다.

patch -p0 -E <094u2.dif 를 입력하여 패치 진행

cd mame094u1base를 입력하여 makefile이 있는 해당 폴더로 이동한다.

make를 입력하면 컴파일이 진행된다.


MAME 0.94u1 Compile

이전 MAME 0.95u1 Compile 게시물을 참조하여 컴파일 유틸리티를 그대로 사용한다.

마메 공식 버전 다운로드 페이지에서 0.94 소스를 다운로드 한다.

C드라이브 기준으로 설명한다.

C드라이브 루트에 소스파일을 저장한 후 오른쪽 버튼을 눌러 mame094s 폴더에 압축풀기를 선택한다.

그럼 C:\mame094s에 mame.zip으로 압축이 풀린다.

mame.zip을 mame094.zip으로 이름을 바꾸어 준 후 역시 오른쪽 버튼을 눌러 mame094 폴더에 압축풀기를 선택한다.

094u1.dif 파일을 C:\mame094s에 복사한다.

시작-실행-CMD를 입력하여 커맨드창을 띄운다.

C..을 입력하여 C 드라이브의 루트로 이동한다.

path=C:\Mingw\bin 입력 후 엔터

cd mame094s 입력하여 mame094s 폴더로 이동한다.

patch -p0 -E <094u1.dif 입력 후 엔터를 치면 패치가 진행된다.

cd mame094를 입력하여 makefile이 있는 폴더로 이동한다.

make를 입력하면 컴파일이 진행된다.


2012년 4월 20일 금요일

MAME 0.95u1 Compile

공식 MAME는 diff 패치를 제공한다.
공식 버전의 소스를 받아서 diff 패치 해준 뒤 컴파일하면 해당 버전의 실행파일이 만들어진다.
해당 버전을 구할 수 없어서 직접 컴파일을 시도하였다.
이전 버전에 목을 매는 특별한 이유는 없다. 본인은 MAME를 실사용하기보다는 콜렉션이 취미이기 때문이다. 한국에는 플레이 목적으로 해킹버전을 컴파일하는 경우는 볼 수 있었으나 공식 버전을 컴파일 하는 경우는 아직 찾아볼 수 없었다.
컴파일 유틸리티는 Mingw라는 프로그램이며 이 프로그램은 무료 컴파일러로서 mameworld에서 받으면 된다.
버전별로 컴파일러가 다르므로 MinGW-3.2.0-rc-3.exe + mingw-over-092.zip(0.92 - 0.104u1) 용을 받으면 된다.
MinGW-3.2.0-rc-3.exe를 받아서 설치한다.
기본적으로 C:\Mingw에 설치된다. 아직 중요 컴파일러가 설치되어 있지 않으므로 mingw-over-092.zip를 받아서 압축을 해제한 후 C:\Mingw에 덮어씌운다.

마메 공식 홈페이지에서 0.95 소스를 다운로드 한다.
역시 0.95u1 diff 파일을 다운로드 한다. (찾기 힘들지만 공식 홈페이지 찾아보면 있다.) 이후 C 드라이브 기준으로 설명한다.
C:\mame095s 폴더에 압축을 해제한다.
mame.zip이 압축 해제된다.
mame.zip을 mame095base.zip으로 이름을 바꾸어 준후 마우스 오른쪽 클릭하여 mame095base폴더에 압축풀기를 선택한다. 이유는 나중에 설명.
그럼 내용물은 C:\mame095s\mame095base 안에 압축 해제되어 있을 것이다.
시작-실행에서 cmd를 입력하여 커맨드창을 띄운다.

이제 컴파일러를 실행할 path를 지정해 주어야 한다. 물론 고급 설정창에서 입력하면 항상 지정되지만 버전별로 컴파일러가 다르므로 본인은 그렇게 하지 않았다.

C:\>path=C:\Mingw\bin

입력하면 컴파일러의 위치가 지정된다. 물론 커맨드창을 닫으면 위치 지정은 해제된다.

095u1.diff 파일을 C:\mame095s 폴더에 복사한다.

커맨드창에 cd C:\mame095s 를 입력하여 해당 폴더로 이동한다.

커맨드창에 patch -p0 -E <095u1.diff 를 입력하면 자동으로 패치가 진행된다.
095u1.diff 파일을 메모장으로 열어보면 패치할 위치가 mame095base 폴더로 지정되어 있다.
즉, mame095base 폴더 안에 압축을 풀어야 패치가 정상적으로 진행된다.
패치도중 패치할 대상 또는 파일을 물어보면 실패한 것이다.

이제 커맨드 창에 make를 입력한다.

자동으로 컴파일 되어 C:\mame095s 폴더에 4개의 실행파일이 생성된다.
이때 생성된 mame.exe는 정보보기 하면 컴파일된 날짜와 0.95u1으로 확인된다.
본인은 공식 소스와 공식 diff로만 컴파일하여 공식 0.95u1을 생성하였다.
어짜피 0.95 버전은 Win32버전이므로 DOS에서 실행되지 않는다.


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월에 수정을 약간 하였습니다

Mame CHD Convert (Update 방법)

최근의 Mame에는 CHD(Compressed Hunks Data)라는 대용량 파일이 존재합니다.
CHD는 HardDisk, CD-rom, Lager Disk 등의 데이터를 Mame용 포맷으로 사용하는 파일입니다.
그 중에 Lager Disk용 CHD는 보통 10기가가 넘어가는 대용량 파일입니다. 일반 사용자는 엄두도 못낼 용량이지요. 보통의 torrent라면 Lager Disk CHD는 다운로드가 굉장히 어렵습니다. 특히 국내에서는 생각보다 재미 없는 Laser Disk CHD를 수집하는 사람이 거의 없습니다. 아마도 chd를 소장하신 분들은 알고 계실 겁니다.

이전 버전의 v1,v2는 정확히는 알수 없으나 보통 Mame 0.127~0.130까지는 v3가 Mame 0.130u1부터 v4가 적용되어 있습니다. 정확히는 0.63부터 0.77까지 v1, 0.78부터 0.130까지는 v3가, 0.130u1부터는 v4가 사용됩니다. 이유는 모르지만 v2는 볼 수 없었습니다.(다만 v1,v3는 md5가 같기 때문에 버전을 바꾸지 않아도 에뮬레이터에서 인식됩니다.) 즉 0.130까지 사용되던 v3버전의 CHD가 0.130u1로 넘어오면서 Mame32 계열(Mame UI,Mame Plus 등)에서 CRC와 MD5가 맞지 않는다는 메세지를 뱉어 냅니다. 물론 0.127부터 새로 추가되거나 재덤프된 CHD도 있지만 0.130까지 잘 인식되던 CHD가 0.130u1에서 인식되지 않는 것은 버전이 틀리기 때문이라고 보면 됩니다. 새로 재덤프된 것은 변환 실패가 뜨며 변환성공하였다고 하더라도 체크섬이 맞지 않습니다.
실행에는 큰 문제가 없으나 아무래도 포맷을 변경시켜 주어야 원활한 플레이가 될 겁니다.

컨버전 하는 프로그램은 chdman.exe입니다. 공식 마메 에뮬레이터 안에 들어있습니다.
마메 공식 홈페이지인Mamedev 메인 페이지를 봐도 기본 사용법이 나와 있습니다.

chdman -update

위와 같이 명령 프롬프트로 하면 한개씩만 변환됩니다. 매우 번거로운 일이죠. 다음과 같이 배치 파일을 만들어서 사용하면 일괄변경 됩니다. convert.bat라는 배치파일을 만들어 봅시다.

배치파일로 chd 변환하기

@echo off
set old_dir=.\chds.old
set new_dir=.\chds.new
set chdman=.\chdman.exe
for /F %%a in ('dir /b %old_dir%^|find /v "_ReadMe_.txt"') DO (
if NOT exist "%new_dir%\%%a" (
mkdir "%new_dir%\%%a"
)
for /F %%b in ('dir /b "%old_dir%\%%a"') do (
echo Converting: %%b
"%chdman%" -update "%old_dir%\%%a\%%b" "%new_dir%\%%a\%%b"
)
)
copy /y "%old_dir%\_ReadMe_.t


위의 배치파일 실행시 구버전 CHD의 경로는 다음과 같습니다.
covert.bat-------------old.chds--------chd Folder--------chd File
chdman.exe      |
                        |
                        |-----new.chds

즉, old.chds라는 폴더를 만들어서 chd 파일의 폴더까지 넣으면 됩니다. 그럼 자동으로 변환된 chd 파일들이 각 폴더를 알아서 new.chds 폴더로 저장됩니다.
변환하는데 시간이 좀 걸립니다. 담배 한대로는 끝나지 않을 겁니다. v3버전이 70기가가 넘는데 대략 70기가 이상의 하드디스크 용량이 필요합니다. 거의 동일한 용량으로 변환되니 변환전의 chd파일의 용량만큼 필요하겠죠.

하지만 chdman은 이전버전으로의 다운그레이드가 안됩니다. 되는 것도 있을 수 있으나 대부분 안됩니다.
진정한 수집가라면 v3도 v4도 소장하고 있어야죠. 다운그레이드 하기 위해서는 xdelta3라는 프로그램과 컨버전이 기록된 파일이 필요한데 구하기 쉽지 않습니다. 구하지 못한 분들은 v3,v4 모두 소장해야 합니다. xdelta3와 컨버전 기록파일은 대략 600메가 정도 됩니다.

Rom File Codes(Tag)

Standard Codes
Code Mean Etc
[!] Verified Good Dump
[a] Alternate Alternate version of a rom, to fix bugs or to eliminate compatibility with Game Genie or Action Replay codes.
[b] Bad Dump These usually happen with a bad electrical connection or an incompatibility between the game and the copier. More rarely, an FTP upload may have been corrupted.
[c] Cracked Cracked, that is, fixed to run better on a copier or emulator
[f] Other Fix
[h] Hack Hack, such as a release group's intro, cheating, compatibility with multiple regions, graphic changes, or even a total conversion of the game engine.
[o] Overdump Overdump that contains repeated data that should be discarded.
[p] Pirate
[t] Trained
[T] Translation [T-] Old translation
[T+] New translation
(Unl) Unlicensed
[x] Bad Checksum
ZZZ_ Unclassified
(M#) Multilanguage # of Languages
(###) Checksum value Usually CRC32
(???k) ROM Size
(PD) Publick Domain Internet release authorized for free redistribution.

Platform-specific codes
Game Machine Code Mean Etc
Colecovision (Adam) ADAM version
Game Boy [S] Super GameBoy enhanced or exclusive
[C] Color GameBoy enhanced
[BF] Bung fix rom has been modified to run on Bung's 1.0 flash carts
Game Boy Advance [hI??] Intro hacks
Mega Drive/Genesis [c] Cart's checksum is known to be faulty
[x] Bad Checksum
[R-] Countries
Neo-Geo Pocket Color [M] Mono only
Nintendo Entertainment System/Famicom (PRG #) Version Same as [a] but more likely to use the publisher's official version numbering
(PC10) PlayChoice 10 PlayChoice 10 was an arcade unit which played exact copies of NES games in an arcade cabinet. The machines had a choice of 10 games to choose from and ran for about 3 minutes on 25 cents.
(VS) VS Unisystem VS Unisystem, an NES-based arcade game platform. To prevent piracy, each game used a different permutation of the NES palette, unscrambled by the video chip at run time.
[hFFE] Patched for use with Front Far East copiers
[hM##] Mapper hack These games have been patched to run on NES boards of type #, following the iNES numbering standard.
Super Nintendo Entertainment System/Super Famicom (BS) Broadcast Satellaview Broadcast Satellaview was a satellite receiver for the Super Famicom in Japan. Roms were transmitted along with a TV show which was connected to the game in some way. These games were only playable during the show, and thus stop after an hour, and many were timed so that only certain time periods were playable.
(ST) Sufami Turbo The Sufami Turbo device allowed two Game Boy sized carts to be plugged into the SNES. Certain carts combined into new games much like the Sonic & Knuckles lock-on technology by Sega.
(NP) Nintendo Power Nintendo Power magazine has been known to release games only available to its subscribers. Most of these roms are Japanese, as this practice occured mainly in Japan.
(NSS) Nintendo Super System These were arcade versions of games.

Standard Country Codes
Code Region
(A) Australia
(C) China
(E) Europe
(F) France
(FC) French Canadian
(FN) Finland
(G) Germany
(GR) Greece
(HK) Hong Kong
(I) Italy
(J) Japan
(K) Korea
(NL) Netherlands
(S) Spain
(SW) Sweden
(U) USA and English Canadian
(UK) United Kingdom
(W) World
(Unk) Unknown country
(PAL) Europe and other regions using PAL TV system.

Mega Drive/Genesis Country Codes
Code Region
(1) Japan and Korea
(4) USA and Brazil NTSC
(5) NTSC Only
(8) PAL Only
(B) non-USA
(W) World


롬 뒤에 붙는 태그 설명입니다.
오래전에 네이버에서 아무리 찾아도 없어서 외국 포럼에 직접 질문을 하니 리플이 달린 것을 보기 쉽게 표로 정리 해놨습니다.
국내에서는 롬을 플레이 하려고 수집하는 유저가 대부분이라 아무래도 정보가 부족한 듯 합니다. 영어 약자라서 그런지 개인적으로는 한글로 보는 것 보다 영어가 더 편하더군요.
태그를 쓰면 롬 파일 이름을 최소화하면서 많은 정보를 담을 수 있습니다.