롬 해킹 기초
이 블로그의 한글패치(슈퍼 마리오 RPG, 제절초, 드래곤볼 Z 초오공전 돌격편, 드래곤볼 Z 초오공전 각성편, 고스트 트릭)를 만들면서 쓴 지식을 처음부터 풀어 쓴 가이드입니다. 16진수를 몰라도 그림으로 시작할 수 있고, 접어 둔 「더 깊이」를 펼치면 실제로 롬을 고칠 수 있는 데까지 들어갑니다.
이런 분께 맞습니다
- 롬 해킹이 궁금하지만 "16진수", "뱅크", "어셈블리" 같은 말에서 막힌 사람
- 아래 롬 분석 노트를 읽다가 개념을 처음부터 알고 싶어진 사람
- 직접 번역 패치를 만들어 보고 싶은 사람
컴퓨터 구조를 미리 알 필요는 없습니다. 장마다 앞 장의 내용을 바탕으로 씁니다. 처음이라면 공통 1장 롬과 패치부터 차례로 읽어 주세요.
한 장은 네 부분으로 되어 있습니다
같은 장 안에서 읽는 깊이를 고를 수 있습니다. 처음에는 「쉽게」만 읽고 넘어가도 다음 장을 따라오는 데 문제가 없습니다.
- 쉽게 그림과 비유로 개념을 잡습니다. 늘 펼쳐져 있습니다.
- 더 깊이 접혀 있습니다. 펼치면 공식, 데이터 형식, 예외 상황까지 다룹니다.
- 실제 패치에서 한글패치를 만들며 실제로 만난 주소와 바이트로 같은 개념을 다시 봅니다.
- 직접 해 보기 페이지 안의 계산기·실행기를 만져 보거나, kr-patch-toolkit의
krpatch명령으로 따라 합니다.
세 갈래
가이드는 세 갈래로 나뉘고, 갈래마다 1장부터 셉니다. 처음이라면 공통 기초부터 읽고, 고칠 게임기의 갈래로 넘어가세요. 다른 갈래의 장을 가리킬 때는 「공통 3장」, 「DS 2장」처럼 갈래 이름을 붙입니다.
공통 기초
어느 게임기를 고치든 필요한 바탕입니다. 롬과 패치, 16진수와 엔디안, 압축, 게임 음악 반복을 다룹니다.
슈퍼 패미콤
65c816 CPU와 뱅크 주소, 어셈블리와 후킹, 타일 그림과 대사, 소리, 에뮬레이터로 확인하기, 롬 확장까지 다룹니다.
닌텐도 DS
ARM9·ARM7 두 CPU와 파일 시스템, ARM 어셈블리와 후킹, 그림과 대사, SDAT 음악, 에뮬레이터로 확인하기를 다룹니다.
롬 분석 노트
한글패치 5개를 만들며 롬에서 확인한 주소와 형식, 고친 코드, 확인 방법을 게임마다 적은 기록입니다. 노트의 각 절에서 그 개념을 설명하는 장으로 건너갈 수 있습니다.
슈퍼 패미콤
슈퍼 마리오 RPG
이어지는 장: 공통 1·2·3장, 슈퍼 패미콤 1·2·3·4·5·6·7·8·9장
제절초
이어지는 장: 공통 1·2·3·5·6장, 슈퍼 패미콤 2·3·4·5·6·7·8·9장
드래곤볼 Z 초오공전 돌격편
이어지는 장: 공통 1·2·3·4장, 슈퍼 패미콤 2·3·4·5·6·8·9장
드래곤볼 Z 초오공전 각성편
이어지는 장: 공통 1·2·3·4장, 슈퍼 패미콤 2·3·4·5·6·8·9장
닌텐도 DS
고스트 트릭
이어지는 장: 공통 1·2·3·4·6장, 슈퍼 패미콤 5·6·8·9장, DS 1·2·3·4·5·6·7·8장
용어집
읽다가 모르는 말이 나오면 용어집에서 찾아보세요. 가이드에 나오는 용어 210개를 가나다순으로 모았고, 용어마다 그 말을 설명한 장으로 가는 링크가 있습니다.
준비물
- 헥스 에디터: 파일을 바이트 단위로 보여 주는 프로그램입니다. 아무것이나 괜찮지만, Windows·macOS·Linux에서 모두 돌아가고 꾸준히 업데이트되는 ImHex를 추천합니다. macOS·Linux라면 터미널의
xxd로도 충분합니다. - kr-patch-toolkit: 이 패치들을 만들 때 쓴 명령 모음입니다. Python 3.15 이상에서
pip install git+https://github.com/perfectacle/kr-patch-toolkit@v0.4.0으로 설치합니다. - 에뮬레이터: 게임기마다 다른 에뮬레이터를 썼습니다.
- 슈퍼 패미콤: 디버거가 있는 MesenCE. 슈퍼 패미콤 8장에서 자세히 다룹니다.
- 닌텐도 DS: libretro desmume 코어. DS 8장에서 자세히 다룹니다.
- 롬 파일: 이 가이드와 툴킷에는 롬이 들어 있지 않습니다. 직접 가진 카트리지에서 뽑은 롬으로 따라 해 주세요.
댓글