처음으로 헥사 에디터를 만지실분도 계실 것이기에 약간의 기본적인 내용만 적겠습니다.
헥사 에디터 내의 데이터 들은 모두 16진수 로 이루어져 있습니다. 아래 이미지를 보시죠.
UltraEdit 라는 헥사 에디터를 이용하여 삼국지6 의 세이브 파일을 열어 본 것입니다.
화면 속의 코드들이 하나같이 숫자와 영문이 뒤섞인 16진수로 나타나 있습니다.
16진수는 한 자리 수가 1 2 3 4 5 6 7 8 9 A B C D E F 로 9 다음에 A ~ F 까지의 숫자가 더 나오고
그 다음에 10 이 나오면서 두 자리수로 넘어가는 구조 입니다.
따라서 '16진수 A' = '10진수 10' 이 됩니다.
가만히 보시면 화면이 세 영역으로 구분되어 있습니다. 왼쪽은 주소를 나타냅니다. 즉, 맨 아래서 둘째 줄에 있는 주소
'362B0' 에 해당하는 데이터는 'EE' 가 됩니다. 그럼 '362B1' 은? 바로 옆의 '00' 이 되는 겁니다.
가운데 영역에서 데이터 들이 16진수 코드로 죽 나타나게 됩니다. 에디트가 이 영역에서 이루어 집니다.
가운데 영역의 16진수 코드들은 세 번째 영역에서 위의 그림과 같은 문자로 표시됩니다. ASCII 코드라고 하지요?
데이터를 찾고 확인할 때 이 아스키 코드를 많이 참고하게 됩니다.
예로 '제갈량의 데이터를 에디트 하고 싶다!'
해서 제갈량의 데이터를 찾는데 위 이미지와 같이 '제갈양 공명' 하고 씌여진 부분이 없다면 찾은 데이터가 제갈량의
데이터가 확실한지 의심이 들 수 있겠죠. 하지만 위와 같이 아스키 코드를 참고 해서 확인하면 됩니다.
다음으로, 헥사 에디터 에서는 16진수 데이터 들을 '역 워드' 로 표현합니다. 무슨 말이냐?
말 그대로 역 입니다. 뒤집어 표시한다는 말입니다. 한 가지 예를 들어 보겠습니다.
위의 이미지에 동그라미 씌여진 코드 'AF 2F' 를 보겠습니다. 이 코드를 우리가 이해하기 쉽게 10진수로 바꾼다고 합시다.
10진수로 바꾸는 방법은 여러 헥사 에디터의 메뉴를 찾아 보면 나옵니다. 또는 윈도우 계산기를 이용하는 법도 있습니다.
계산기를 실행시켜 보기 ㅡ> 공학용 으로 바꾸면 16진수 // 10진수 // 8진수 // 2진수 로 변환할 수 있는 항목이 생깁니다.
이 상태에서 변환하고자 하는 숫자를 입력한 뒤에 진법을 바꾸면 바꾼 진법대로 숫자가 바뀝니다.
그러면 위 제갈량의 데이터에 동그라미 친 'AF 2F'를 10진수로 바꾸기 위해서는 'Hex' 에 체크 한 뒤 'AF 2F' 라고 입력하면 되는가?
안 됩니다. 바로 헥사 에디터 내에 'AF 2F' 라는 데이터는 역 워드로 표시된 것이기 때문입니다. 따라서
'2F AF' 라고 뒤집어서 입력해야 합니다. 반대의 경우를 들어 보겠습니다. 예로 제갈량의 경험치를 5000 으로 바꾸고 싶다!,
그럼 5000의 16진수를 알아야 겠죠? 계산기에 'Dex' 에 체크한 뒤 5000을 입력하고 Hex 에 체크하면
16진수 '13 88' 이 나옵니다. 이걸 헥사 에디터에 입력할 때는 뒤집어서 '88 13' 으로 입력해야 합니다.
혹, 계산기에서 16진수로 변환 했더니 'AF0' 라는 숫자가 나왔다고 합시다. 그럼 이걸 뒤집어서 어떻게 입력해야 하는거지?
하고 당황할 수 있습니다. 이 때는 A 앞에 '0' 이 생략되어 있는 경우입니다. 따라서 'F0 0A' 라 입력하시면 됩니다.
16진수와 역워드는 반드시 숙지하셔야 에디트를 할 수 있는 기본 중의 기본 입니다. 에디트를 하실 거면 꼭 숙지하셔야 합니다.
다음으로 데이터의 주소 입니다. 삼국지6의 세이브 파일은 현 게임상의 모든 데이터를 포함합니다. 예로 게임상에서
어떤 장수를 클릭하면 장수 정보창이 나타나면서 무력 지력 경험치 일기토 소지작전 등등이 나타나지요.. 편의상
'장수 데이터' 라 부르겠습니다. 그런데 삼국지6 에서는 수백 명의 장수들이 나옵니다. 그리고 현재 플레이 상에서는
이미 죽은 장수도 있고 태어나지 않은 장수도 있고 태어났지만 나이가 어려 등장하지 않은 장수도 있지요.. 이 모든 장수들의
데이터가 나옵니다. 그리고 그 데이터의 주소는 항상 동일합니다.
위의 이미지 중에 제갈량의 이미지가 있지요? 제갈량 이름이 나오는 곳의 주소를 보니 '36240' 이군요.. 그럼 어떠한 세이브 파일
을 열어 에디트를 해도 제갈량의 데이터 주소는 '36240' 이란 뜻입니다.
다음은 데이터의 구조 인데요,, 장수 정보창을 열어 보면 무력 지력 기력 군경 내경 일기토 소지작전 등등의 여러 데이터가
나타나지요.. 이런 것 하나 하나를 편의상 '세부 데이터' 라고 하겠습니다. 헥사 에디터에서 확인해 볼 때에 이러한
세부 데이터 들의 위치도 항상 고정되어 있습니다.
빨간색으로 동그라미 친 데이터 들을 보시죠. 10진수로 바꿔보면 순서대로 97 55 100 98 98 입니다. 뭔가 감이 오지않으십니까?
그렇습니다. 바로 제갈량의 능력치 (순서대로 통솔 무력 지력 정치 매력) 입니다.
능력치 데이터는 통솔력 무력 지력 정치 매력 의 순서로 이루어지며 능력치 사이에는 항상 16진수 두 자리 '00' 이라는
데이터가 들어갑니다. 이러한 구조는 어느 장수의 데이터를 들여다 봐도 동일합니다.
이 구조를 잘 파악할 수 있어야 실수 없이 에디트를 할 수 있습니다. 물론 어느 위치에 어느 데이터가 위치하고 있는 지는
제가 앞으로 하나씩 글을 올릴 것입니다.
다음은 데이터를 찾는 방법입니다. 예를 들어 내가 제갈량의 경험치를 에디트 하고 싶다!, 그러면
헥사 에디터에서 제갈량의 데이터를 찾아야겠죠. 그런데, 어떻게 찾을까요? 헥사 에디터의 '데이터 찾기' 명령을 이용하면 되는데
거기에 찾을 데이터를 뭐를 넣어야 하는가? 제갈량의 지력이 100 이니 100을 넣어 찾는다고 칩시다. 그런데 막상 찾을려고 하면
100이란 데이터는 무수히 많이 나옵니다.왜냐면 충성이 100 일 수도 있고 기력이 100 일 수도 있지요.. 그리고 그런 장수가
수백명이니 말입니다.그리고 100은 16진수로 64라는 두 자리 수인데,
네 자리 코드가 제일 좋습니다.
장수 데이터를 찾을 때 가장 좋은 것은 바로 장수의
경험치를 이용하는 것입니다.
숫자가 클 뿐만 아니라 22354,13245 같은 세세한 수치이기 때문에 중복되는 일도 거의 없습니다.
한 번 찾아 보겠습니다. 제갈량의 데이터를 찾으려고 합니다. 지금 제갈량의 경험치는 2800 입니다.
찾기에 들어가서
2800 을 10진수로 입력 → Find
주유의 경험치도 2800이군요, 중복 데이터가 있습니다.
계속 찾기 (다음 찾기)
찾았다!! (옆의 아스키 코드로 확인)
이런 식으로 찾으면 됩니다.
찾고 나서 그 장수의 데이터가 자주 찾는(을) 데이터라면 주소록에 위치를 등록시켜 놓으면 다음 번에 찾을 때엔 그 주소만
으로 찾을 수 있으므로 더 간편합니다.
마지막으로 언급할 것은 바로 체크 섬 입니다.
말 그대로 합입니다. 삼국지6 의 데이터들은 일정한 데이터마다(장수 데이터면 장수 데이터마다) 체크 섬을 가지고
있습니다. 저도 체크 섬의 정확한 개념은 잘 모르나 삼국지6 에서는 데이터의 총합을 나타내는 역할을 합니다.
코에이의 다른 게임들은 에디트를 해 봐도 체크 섬이 존재하는 경우는 아직 본 적이 없는데 삼국지6 에서는 이 체크 섬이란게
존재하여 에디트가 어려워 지게 되는 가장 큰 원인이 됩니다.
예로 제갈량의 무력을 100으로 바꾼다! 그러면 헥사 에디터에서 제갈량의 무력의 위치를 찾아 그 자리에 '64'(=10진수 100)
를 입력합니다. 헥사 에디터를 나와 방금 에디트 한 세이브 파일을 로드 합니다. 그런데... 로드가 돼지 않습니다! 한창
재밌게 하고 있는데 돌연 로드가 안 됩니다. 정신 건강이 급 악화 되겠지요.. 로드가 안 되는 이유가 바로 체크 섬 때문입니다.
데이터를 변경하면 그에 따라 체크 섬도 일정한 수치를 가감 해 주어야 합니다.
그러지 않을 경우, 데이터의 총합을 검사해서 체크 섬과 맞지 않게 되므로 로드가 되지 않습니다.
만약 제갈량의 무력을 55 에서 56으로 1을 더하였다면 체크 섬에는 9를 더하여 주어야 합니다. 그래야 로드가 됩니다.
만약에 무력을 100으로 에디트 한다면? 그럼 (100 - 55) * 9 = 405 를 더하여야 합니다.
이렇게 체크 섬에 가감하여 주는 수치도 다 다릅니다. 무력의 체크 섬은 9 지만 통솔력은 8 입니다. 어떤 데이터는
데이터에는 더하는데 체크 섬에는 빼줘야 하는 것도.. 즉 연산 부호가 반대인 것도 있습니다.
체크 섬의 위치는
데이터 별로 동일 합니다. 예로 장수 데이터면 장수 데이터 끼리 같은 위치에 있습니다.
그런데 삼국지6의 데이터 들 중에는 체크 섬의 영향을 받지 않는 데이터도 있습니다. 즉 체크 섬에는 별도의 조작을 하지
않아도 되는 데이터 라는 말인데요,, 이런 데이터 들을 우선하여 에디트 법을 소개하여 드리고자 합니다. 간단하면서도
재미있는 장면을 연출할 수 있습니다.
휴~ 글로 쓰려니 참으로 힘드네요. 시간도 많이 걸리구요.. 어쨌든 제가 앞으로 올릴 에디트 법을 보시고
헥사 에디터에 처음 손 대려시는 분들은 위의 내용 확실히 숙지하시고 에디트 들어가시기 바랍니다. 그만큼 중요하거든요.