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) 안에 있는 텍스트는 다른 방법으로 찾아내야 합니다. 이에 대해서는 다음 글에서 설명하겠습니다.

댓글

글 목록