세이브파일 분석
저장 파일(.dat)을 열어 그 안의 기록을 읽어 줍니다. 일행의 능력치와 장비, 소지품,
골드, 플레이 시간까지 게임을 켜지 않고 확인할 수 있습니다. 파일은 브라우저 안에서만 읽으며
어디로도 올라가지 않습니다.
이벤트 플래그는 무엇인가
저장 파일이 들고 다니는 이벤트 플래그는 416칸짜리 비트맵입니다. 그중 409칸이 실제로 쓰이고, 한 칸은 맵 패치 하나에 그대로 대응합니다. 맵 패치는 "어느 맵의 어느 사각형을, 켜졌을 때의 타일과 꺼졌을 때의 타일 중 무엇으로 채울까"를 적어 둔 기록입니다. 게임은 맵에 들어설 때마다 그 맵의 패치를 표 순서대로 다시 적용하므로, 플래그가 켜져 있으면 문이 열린 모습으로, 꺼져 있으면 닫힌 모습으로 지형이 세워집니다. 409칸 전부를 조사한 결과는 이렇습니다.
- 91개 맵이 패치를 가지고 있습니다. 나머지 맵은 이벤트로 지형이 바뀌지 않습니다.
- 178칸이 1 × 2 크기입니다. 사람 키만 한 세로 사각형 하나 — 문입니다. 여기에는 대부분 같은 효과음이 붙어 있습니다.
- 97칸은 1 × 1입니다. 스위치나 작은 장치처럼 타일 한 칸만 바뀝니다.
- 126칸에는 효과음이 없습니다. 눈앞에서 바뀌는 것이 아니라, 다시 왔을 때 이미 바뀌어 있는 지형입니다.
- 패치가 가장 많은 맵은 진마탑 11층 62칸, 진마탑 2층 18칸, 디아몬드 15칸, 아마조나 13칸, 마탑 7층 13칸입니다.
- 새 게임을 시작한 저장 파일에도 이미 일곱 칸이 켜져 있습니다. 게임이 시작할 때 세워 두는 기본 지형입니다.
조우 설정은 무엇인가
조우 설정은 맵 500칸짜리 표입니다. 걸음마다 게임은 지금 맵의 칸을 읽어 -1이면 그 자리에서 포기하고, 0 이상이면 그 번호의 전투 기록으로 조우를 준비합니다. 동봉된 저장 파일 82개를 전부 조사해 보면 이 표에는 0과 -1 두 값만 나타납니다. 사실상 맵별 조우 스위치인 셈이고, 실제로 이벤트 스크립트에도 이 칸을 0이나 -1로 쓰는 명령 하나가 있습니다.
- 새 게임에서는 약 200개 맵이 켜져 있고 300개가 꺼져 있습니다. 마을과 실내, 세계지도가 꺼진 쪽입니다.
- 본편을 끝까지 진행하는 동안 값이 바뀌는 맵은 일곱 곳뿐입니다 — 오행산 엄지봉, 오행산 약지봉, 폭포 뒤편 동굴, 폐광 두 곳, 격투장 내부던전, 켄타우로스의 방. 모두 꺼져 있다가 켜집니다.
- 즉 이 표는 진행에 따라 크게 출렁이지 않습니다. 대부분은 처음 정해진 대로 유지되고, 이야기가 특정 장소를 "이제 위험한 곳"으로 바꿀 때만 움직입니다.
- 스위치가 켜져 있어도 조우가 바로 일어나지는 않습니다. 마지막 전투 이후 15~53걸음을 넘겨야 하고, 조우를 막는 장비를 찬 일행이 있으면 건너뜁니다.
저장 파일 구조
저장 파일은 15,232바이트입니다. 앞쪽은 자리와 크기가 고정된 구간이 정해진 순서로 이어지고, 뒤쪽에 길이가 앞에 붙은 두 덩어리가 따라옵니다. 게임이 저장할 때 쓰는 순서가 곧 파일의 지도라, 아래 표는 그 순서를 그대로 적은 것입니다.
| 자리 | 크기 | 내용 | 여기서 읽나 |
|---|---|---|---|
0x0000 | 48B | 미리보기 헤더 — 슬롯 번호, 맵 이름, 선두 레벨, 플레이 시간 | 읽음 |
0x0030 | 3,008B | 일행 기록 16개 × 188B — 레벨·HP·MP·능력치·장비·스킬·상태 | 일부 |
0x0bf0 | 64B | 맵 번호, 골드, 일행 수, 10칸 배치, 선두 번호 | 읽음 |
0x0c30 | 200B | 필드에 세운 캐릭터 오브젝트 배치 스냅샷 | 안 읽음 |
0x0cf8 | 1,440B | 아이템 360종의 수량 | 읽음 |
0x1298 | 16B | 선두의 타일 좌표·층·바라보는 방향 | 읽음 |
0x12a8 | 2,000B | 맵 500칸의 조우 설정 덮어쓰기 | 개수만 |
0x1a78 | 40B | 맵 스위치 비트와 게이트 기록 4개 | 일부 |
0x1aa0 | 348B | CIM 고정 행 16개와 런타임·동반 블록 | 안 읽음 |
0x1bfc | 7,388B | CIM 블롭 — 이벤트 플래그, 오브젝트 플래그, 도시 기록, 이벤트 행 | 일부 |
0x38d8 | 680B | 이벤트 카운터 블롭 | 안 읽음 |
일행 기록 하나는 188바이트, 47개의 값입니다. 이 페이지는 그중 레벨과 HP·MP, 상태창의 능력치 일곱 개, 장비 다섯 칸, 스킬 열 칸을 읽습니다. 나머지는 전투 중에만 쓰는 상태 비트와 순서 게이지, 그리고 아직 이름이 확실하지 않은 두 번째 능력치 묶음입니다. 전체로 보면 파일의 약 17%를 읽는 셈입니다.
뒤쪽 덩어리인 CIM 블롭이 모험의 진행도입니다. 여섯 워드짜리 머리말 뒤에 이벤트 플래그 비트맵 416칸, 오브젝트·효과 플래그, 도시 기록, 이벤트 행이 차례로 들어가고 전체가 하나의 키로 XOR되어 있습니다. 그 키는 머리말 마지막 워드에 남아 있어, 위 진행 기록은 이것을 풀어서 보여 준 것입니다. 아직 이름을 붙이지 못한 자리도 남아 있습니다 — 필드 배치 스냅샷, CIM 고정 행, 이벤트 카운터는 값만 있고 뜻이 정리되지 않았습니다.
자리와 순서는 추측이 아니라 게임 코어가 저장 파일을 쓰는 코드에서 가져왔고, 동봉된 저장 파일 82개로 확인했습니다.