5. 랑그릿사2 텍스트 데이터 (1)

랑그릿사2 PC판에서 텍스트와 관련된 파일은 다음과 같습니다.

1. tdat.res >> CHRMAKE.DAT : 캐릭터 메이킹
2. tdat.res >> E_*.DAT : 시나리오별 이벤트
3. tdat.res >> E_*J.DAT : 시나리오별 승리조건 및 패배조건
4. tdat.res >> E_*P.DAT : 시나리오별 프롤로그
5. tdat.res >> EP.DAT : 엔딩 후일담
6. tdat.res >> ITEM.DAT : 아이템 이름 및 설명
7. tdat.res >> MENU.DAT : 메뉴
8. tdat.res >> NAME.DAT : 캐릭터 이름
9. tdat.res >> SCEN_NO.DAT : 시나리오 번호
10. tdat.res >> SETUMEI.DAT : 전술 설명
11. tdat.res >> STAFF.DAT : 엔딩 스탭 롤

하지만 메모장으로 파일을 열어봐도 텍스트를 확인할 수 없습니다. 이는 텍스트가 약간 변형돼있기 때문입니다. 0x38와 XOR 연산을 하면 텍스트를 복원할 수 있습니다. 예를 들어 CHRMAKE.DAT 파일을 보면,

Offset(h)
00000000 : 87 9C 83 DF 80 96 86 FE 87 99 18 87 F8 85 FD 18
00000010 : 88 F5 F8 83 18 F0 97 87 8D FF ED 8C F7 8C E1 16
00000020 : 32 F9 9E 18 F8 F4 80 9F F8 82 18 8F DF 85 FB 80

...

첫번째 바이트는 0x87이며 이를 0x38와 XOR 연산을 하면 0xBF가 됩니다. 이와 같은 방식으로 모든 바이트를 변환할 수 있습니다.


Offset
원래 데이터
XOR 연산후
한글
00
87
BF
01
9C
A4
02
83
BB
03
DF
E7
04
80
B8
05
96
AE
06
86
BE
07
FE
C6
08
87
BF
09
99
A1
0A
18
20
(공백)
0B
87
BF
0C
F8
C0
0D
85
BD
0E
FD
C5
0F
18
20
(공백)
...
...
...
...


Offset(h)
00000000 : "엘사리아에 오신 "
00000010 : "것을 환영합니다."
00000020 : "\n제 이름은 루시리"

00000030 : "스. 지상에서는\n"
00000040 : "빛의 여신이라 불"
00000050 : "리고 있습니다. \0"
...


(여기서 \n은 줄바꿈을 나타내고 \0은 문자열이 끝났음을 나타냅니다.)

변환한 결과 CHRMAKE.DAT 파일의 첫번째 문장은 다음과 같음을 알 수 있습니다.
 "엘사리아에 오신 것을 환영합니다.\n제 이름은 루시리스. 지상에서는\n빛의 여신이라 불리고 있습니다. \0"

마찬가지로 나머지 문장들도 변환하여 모든 텍스트를 알아낼 수 있습니다. 다만, 실행파일(langpc2.exe) 안에 있는 텍스트는 다른 방법으로 찾아내야 합니다. 이에 대해서는 다음 글에서 설명하겠습니다.

댓글

글 목록