롬데이터의 개념 ① /
에뮬레이터로 롬을 구동하기 위해서는 에뮬레이터에 로드하려는 롬파일에 대한 정보를 전달해주어야 하는데 이것을 통칭하여 롬데이터(Romdata)라고 한다.
mame nebula kawaks등이 롬데이터를 이용하는 대표적인 에뮬레이터들이다.
그러나 mame나 kawaks의 경우는 제작자가 롬데이터까지 컴파일을 하기때문에 사용자가 롬데이터라는 것을 인식하기가 어렵다.
반대로 nebula의 경우는 romdata라는 폴더에 롬데이터를 텍스트 형식으로 저장해두고 필요에 따라 불러와서 사용하기때문에 사용자가 롬데이터에 직접 접근하여 수정을 가할 수 있다는 장점이 있다. 웹 상에서 공유되어지는 대부분의 롬데이터는 nebula의 그것이다.
물론 소스가 공개되어진 mame의 경우 소스에 들어갈 롬데이터를 공유하기도한다.
kawaks의 경우 loader를 이용해 롬데이터를 읽어들여 최신롬을 돌리기도 하는데 이 경우에 사용되는 롬데이터의 경우 nebula의 그것과 동일하다.
/ 롬데이터의 개념 ② /
특정 게임의 롬데이터를 보면서 설명해보자.(nebula의 롬데이터. 이탤릭체는 설명을 위한 부분이므로 실제 데이터에는 존재하지 않는다.)
인용:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
System: NEO 밑에 설명된 롬파일을 구동하는 기종에 대한 설명. NEO는 네오지오 게임이라는 것을 알려주는 내용이다.
RomName: mirror 롬파일의 이름을 알려준다. 만약 롬파일의 이름이 mirror.zip라면 롬네임은 mirror이다.
Game: 울트라 나이스 짱 mirror!! (non encrypted P, decrypted C) 게임의 제목을 적어주는 부분이다.
[Program] 이부분은 아래에서 자세히 다루어보자.
999-p1.rom,0,100000,12345678,0
999-p2.rom,100000,400000,02461357,0
[System]
CartridgeID: 999 게임 카트리지의 ID넘버를 알려준다. 주로 게임의 출시순으로 번호가 붙는다. 만약 999라면 네오지오 기종의 999번째 게임이라는 말이다.
GfxCrypt: 0 암호화 롬인지 비암호화 롬인지를 알려준다. 0이면 비암호화. 1이면 암호화롬이다.
GfxKey: 0 암호화 롬일 경우 그것을 암호를 풀기위한 방식을 알려준다. hex코드 형태의 수치로 적는다.
ButLayout: 9 요건 필자도 잘 모른다.
Fix: 1 이것도 GfxKey처럼 게임을 제대로 풀어 내기위해서 필요한 것이다.
그럼 위에서 설명치 않은 부분에 대해 알아보자.. 라고 하고 싶었지만 너무 깊이 들어가는지라..^-^;
혹시 궁금하다는 분들이 계시면 다음에 다시 적을께요..^-^;;
그리고 롬데이터 중에는 PGENJURO님의 말씀대로 단순히 롬파일을 검사하기 위한 것들도 있지요.
그리고 롬셋이라는 개념은.. 그것도 필요하면 다음에 설명하지요..^-^;;
mirror 가 금 9월 05, 2003 10:30 pm에 수정함, 총 1 번 수정됨
===========================================================에뮬 크래쉬
롬 데이터 구조 (네뷸러 ,카왁)
System: NEO ----시스템이름 즉 CPS1이면 CPS1이라고 적어야 겠지요
RomName: kof2010 ----롬파일의 이름입니다. 즉 kof2010.zip 이라면 kof2010이라고 적어야 한다는 말입니다.
Game: The King of Fighters 2010 ----게임창제목 혹은 목록의 이름이 됩니다. 잘써주셔야겠지요
[Program] ----프로그램롬파일 네오지오의 경우 p1,p2등 p로 써진롬파일들
kof2010_p1.rom,0,600000,7BDC4420,0
롬파일 이름 롬용량 롬 CRC
[Text] ----네오지오 기판의 폰트 및 글자를 책임지는 롬파일인 S롬적는곳
kof2010_s1.rom,0,20000,AAEF740C,0
[Z80] ----메인 음원 배경음의 정보등을 가지고 있는 롬파일인 M롬 적는곳
kof2010-m1.rom,0,20000,4E81642E,0
[Samples] ----음성 타격음 등의 고용량음원의 정보 및 파일을 보유한 V롬적는곳
kof2010-v1.rom,0,400000,E7203930,0
kof2010-v2.rom,400000,400000,675159C3,0
kof2010-v3.rom,800000,400000,F8810665,0
kof2010-v4.rom,C00000,400000,B57B4EA3,0
[Graphics] ----그래픽 그림정보등을 담고 있는 C롬파일 적는곳
kof2010_c1.rom,0,800000,465D473B,0
kof2010_c2.rom,1,800000,3EB28F78,0
kof2010_c3.rom,1000000,800000,F4D4AB2B,0
kof2010_c4.rom,1000001,800000,A69D523A,0
kof2010_c5.rom,2000000,800000,BA2A7892,0
kof2010_c6.rom,2000001,800000,37371CA1,0
kof2010_c7.rom,3000000,800000,56AC5FB9,0
kof2010_c8.rom,3000001,800000,DE99E613,0
[System] --게임시스템 정의 하는곳
CartridgeID: 269 -- 게임기판의 발매순서에 따른 기판 번호 (막쓰셔도 무방)
GfxCrypt: 0
GfxKey: 0
ButLayout: 9
Fix: 0
★ 난 롬데이터를 수정하고 싶어요
- 우선 네오지오 게임이던 CPS게임이던 기존에 작성되어있는 다른게임의 롬데이터가 있습니다.
그중 자신이 작성할 게임의 롬정보나 롬파일 갯수가 상당히 비슷하다고 즉 8개의 롬을 가진 롬이면 CPS던 네오지오던 그와 유사한
갯수의 롬을 표현한 롬데이터를 찾아서 그것을 가지고 수정해주는 것이 좋습니다.
예) 킹오파 2010롬데이터를 작성하고 싶다면 기존의 킹오파 98 혹은 99 2000 등의 롬데이터를 엽니다.
그중에서 꼭바꿔야할 부분은
*. 바꿔야 할 부분 - 롬파일이름부분 롬용량 부분 롬CRC부분입니다.
롬파일이름은 단순하겠지요 기존에 있던 롬데이터를 열어서 수정해줘도되고 우선
위의 글을보면 kof2010_c1.rom,0,800000,465D473B,0 이라고 되어있는데 킹오파 98로 바꿔보고 싶다면
kof98_c1.bin,0,800000,465D473B,0 이런 식으로 앞의 이름만 바꿔줘야합니다.
다음은 용량부분을 바꿔줘야합니다. 위의 kof2010_c3 롬쪽을 킹오파 98 롬셋으로 바꾼다고 봤을때
kof98_c3.rom,1000000,800000,F4D4AB2B,0 800000 이라고써있는 용량부분이 같다면 그냥 두면 되지만
다를 경우는 바꿔줘야겠지요
저 용량부분은원래는 834100 이런식으로 되어있더라도 대충 8메가 쯤되겠다 싶으면 800000 이라고 적어주면되는겁니다.
즉 612000 이라면 kof98_c3.rom,1000000,600000,F4D4AB2B,0 이렇게 바꿔주면 된다는 이야기입니다.
다음 CRC를 바꿔줘야 합니다.
kof98_c3.rom,1000000,600000,F4D4AB2B,0 이부분입니다 영어와 숫자가 섞인 듯한 이곳의 적는법은 간단합니다.
그에 해당하는 게임의 롬파일압축해제를 하시고 그걸 RAR로 압축하세요
다음 Winrar등으로 열어보면 오른쪽에 CRC가 표현 되는걸 보실수있습니다.
그걸 보고 저 빨간 부분을 바꿔주면 되는겁니다. kof98_c3.rom,1000000,600000,453eo9w2,0
- 저도 헛갈리는 부분은 롬용량 앞부분의 1000000 이런 부분인데 .. 보통 비슷한 롬셋을 지닌 롬과 비슷하게 적어주는 경우
게임에 영향을 주지 않고 잘되는 것으로 확인되었습니다. 허나 잘못쓰면 그래픽이 깨질 수도 있습니다.
그래서 기존의 게임과 비교하는게 좋다는 이야기입니다.