서몬나이트(PS1) 파일 분석

|

2013.10.30

CM2000.DAT 파일

43 4D 50 00 31 00 00 08 (8) : 헤더

7D 00 (2) : 파일 개수

01 00 00 00 00 00 00 00 00 00 (10) : ???

01 00 (2) : 파일1 위치. 실제 위치는 섹터 크기(2048)를 곱해주면 된다.

32 00 (2) : 파일1 크기. 실제 크기는 섹터 크기(2048)를 곱해주면 된다.

00 00 (2) : 파일2 위치. 위치가 0이면 무시한다.

00 00 (2) : 파일2 크기

33 00 (2) : 파일3 위치. 1과 동일.

09 00 (2) : 파일3 크기. 상동

......


파일은 다음처럼 여러 개의 하위 파일들로 나눠질 수 도 있다.

13 00 (2) : 하위 파일 개수

00 00 00 00 00 00 (6) : ???

54 00 00 00 (4) : 파일1-1 위치

00 00 00 00 (4) : 파일1-2 위치. 0이면 무시한다.

30 08 00 00 (4) : 파일1-3 위치

48 0A 01 00 (4) : 파일1-4 위치

.......



이미지 파일은 다음과 같은 구조를 가진다.

01 00 00 00 (4) : 00 = 4bpp, 01 = 8bpp, 11 = 8bpp 타일형(스크롤 되는 화면 등에 사용)

10 00 00 00 (4) : ??

14 02 00 00 (4) : 팔레트 영역 크기

00 00 00 00 (4) : 타일 형식일 경우 타일 위치

00 01 01 00 (4) : 팔레트 X, Y 크기

?? ?? ~ (???) : 팔레트, 16비트(A1B5G5R5).  길이는 팔레트 X*Y*2 와 같다

80 00 (2) : 너비(CrystalTile2에서 이미지를 보려면 4bpp일 경우 이 값에 4를 곱하고 8bpp일 경우 2를 곱한다.)

00 01 (2) : 높이

?? ?? ~ (???) : 이미지. 길이는 너비*높이*2 와 같다.

?? ?? ~ (???) : 타일 형식일 경우 사용하는 공간...


추출한 이미지 예제


위 이미지에 팔레트 값 적용


같은 방법으로 CM1200.DAT 파일에서 추출해서 팔레트 값을 적용한 타이틀 이미지



한자는 바이오스에 내장된 것을 사용하고 히라가나/가타카나는 자체 폰트를 사용한다.

캐릭터 이름 정하는 곳의 폰트는 따로 있고 다른곳에선 쓰이지 않는다.

인터페이스의 글자들은 이미지로 되어있다.

시스템 텍스트는 실행파일(SLPS_025.42)에 있다.

대사 텍스트는 CM1100.DAT를 분해했을 때 나오는 파일중에 헤더가 NFP인 것들에 들어있는 걸로 추정... 블랙/매트릭스처럼 컴파일된 스크립트+문자 코드 치환을 사용하는 걸로 보인다.


서몬 나이트 모든 시리즈가 파일 구조가 비슷하게 되어있다. 같은 회사에서 만든 블랙/매트릭스도 그렇다.


And