삼국지 5 PK의 데이터를 수정해 보자.

보물 데이터

파일 이름은 NIDATA.S5다. 파일 전체 용량은 1836바이트이며, 파일에는 두 부분으로 나뉘어 보물 데이터를 저장한다. 나뉜 데이터를 합치면 10바이트 + 16바이트 총 26바이트의 길이로 하나의 보물을 저장하는데, 따라서 계산상으로는 1836/26, 총 70개의 보물을 저장 가능하다. 그런데 실제 나뉘어진 블록을 보면 각각 74/68개를 저장 가능한 것으로 나오는데, 이건 실제로 보물을 끝까지 저장해봐야 알 수 있을 것 같다.

첫 번째 부분

0 ~ 2EB까지를 말한다.

000102030405060708090A
0xFF0xFF0xFF0x00ABCDEFG
  • A: 삭제 유무 플래그, 0이면 삭제 1이면 존재함
  • B: 보물의 종류, 0x00부터 0x04까지 순서대로 서적, 무기, 명마, 의학서, 옥새
  • C: 그래픽
  • D: 첫 번째 특기 Row의 선택된 특기
  • E: 두 번째 특기 Row의 선택된 특기
  • F: 세 번째 특기 Row의 선택된 특기
  • G: 네 번째 특기 Row의 선택된 특기

첫 네 바이트, 0xFFFFFF00은 고정된 상수값으로 추측하고 있다. 특기는 Bit를 사용하여 하나의 row를 저장한다. 예를 들어 첫 번째 Row의 첫 번째 특기인 화계를 부여하면 파일에는 0x00000001, 즉 1로 저장한다. 따라서 모든 필드에 0xFF를 주면 모든 특기를 부여할 수 있다. 그래픽의 경우에는 서적에 명마 그림을 주는 식의 변경도 가능하다.

두 번째 부분

02C ~ 72B까지는 각 16바이트씩 보물의 상세 정보를 저장한다.

000102030405060708090A0B0C0D0E0F
ABCDDDDDDDDDDDDD
  • A: 상승하는 무력의 등급
  • B: 상승하는 지력의 등급
  • C: 상승하는 정치력의 등급
  • D: EUC-KR로 인코딩되는 보물의 이름. 항상 이름 끝에는 널 문자(0x00)을 넣어야 한다.

특이한 사항으로 무력은 0x0F가 무력 S등급을 가지는데, 서적류(서적, 의학서)는 0x02가 지력과 정치력 S등급을 가진다. 능력치를 올려주는 A,B,C필드는 보물의 타입에 따라 보물의 등급을 부여하는데, 무기는 값의 유무와 상관없이 무력 등급만 부여 가능하며 서적류에는 지력과 정치력을 부여할 수 있다. 특히 서적류는 직접 값을 수정하는 것으로 지력과 정치력 등급을 동시에 부여할 수 있다.(인게임에서 적용되는지는 아직 확인하지 못했다.)