롬 해킹 기초모르는 용어는 용어집에서
닌텐도 DS
ARM9·ARM7 두 CPU와 파일 시스템, ARM 어셈블리와 후킹, 그림과 대사, SDAT 음악, 에뮬레이터로 확인하기를 다룹니다.
이 갈래는 공통 기초의 16진수·엔디안·압축을 안다고 보고 씁니다. 처음이라면 공통 기초부터 읽어 주세요. 장마다 같은 갈래의 앞 장 내용을 바탕으로 씁니다.
차례
CPU와 메모리
DS에는 게임을 돌리는 ARM9과 소리·터치를 맡는 ARM7이 있습니다. ARM과 Thumb 두 벌의 명령, 두 CPU의 메모리 지도, 고스트 트릭 프로그램이 메인 RAM에 놓이는 자리를 봅니다.
롬과 파일 시스템
DS 카드 롬은 폴더와 파일이 든 디스크입니다. 카드 헤더에서 두 CPU의 프로그램과 파일 표를 찾고, 파일 이름에서 롬 위치까지 따라가 봅니다.
ARM 어셈블리 기초
ARM 명령 4바이트를 읽고, 조건 실행·리터럴 풀·시프트 붙은 주소·BL과 LR을 살펴보고, 고스트 트릭의 글꼴 고르기 함수를 한 줄씩 실행해 봅니다. 문자열에서 거슬러 올라가 함수를 찾는 법도 다룹니다.
ARM 후킹
압축된 ARM9 프로그램을 풀어 고치고 다시 압축해 넣는 순서, BL 계산, 덮어쓴 명령을 다시 실행하는 훅을 고스트 트릭 글꼴 함수로 만들어 에뮬레이터로 확인합니다.
그림과 글자
DS의 2D 그림도 타일과 팔레트지만 픽셀을 바이트에 붙여 담습니다. 게임이 정한 그림 형식과 폰트를 읽고, 2비트 픽셀 넷의 순서를 그려 보며 찾습니다.
대사는 어떻게 저장되나
고스트 트릭의 대사는 장면 파일 안, 장면 진행 명령 사이에 2바이트 값으로 들어 있습니다. LZ11을 풀고, 글자와 제어 코드를 읽고, 명령 안의 포인터를 따라가 봅니다.
소리: SDAT와 SSEQ
DS의 소리는 ARM7이 채널 16개로 울립니다. 음악 파일 SDAT의 악보(SSEQ)·악기 표·파형을 따라가고, 악보의 명령 바이트를 하나씩 읽어 틱이 시간이 되는 과정을 봅니다.
에뮬레이터로 확인
desmume libretro 코어를 화면 없이 돌려 입력 스크립트로 같은 장면을 되풀이해 찍습니다. 터치를 포인터 값으로 바꾸고, 세이브 스테이트와 시험 롬으로 뒤쪽 장면에 바로 갑니다.
장 × 게임 노트
장에서 배운 개념을 한글패치가 실제로 어떻게 썼는지, 게임마다 노트의 해당 절로 바로 갑니다. 노트에 해당 절이 없는 칸에는 그 이유를 적었습니다.
| 장 | 고스트 트릭 |
|---|---|
| 1장 CPU와 메모리 | |
| 2장 롬과 파일 시스템 | |
| 3장 ARM 어셈블리 기초 | |
| 4장 ARM 후킹 | |
| 5장 그림과 글자 | |
| 6장 대사는 어떻게 저장되나 | |
| 7장 소리: SDAT와 SSEQ | |
| 8장 에뮬레이터로 확인 |
다른 갈래
공통 기초
어느 게임기를 고치든 필요한 바탕입니다. 롬과 패치, 16진수와 엔디안, 압축, 게임 음악 반복을 다룹니다.
슈퍼 패미콤
65c816 CPU와 뱅크 주소, 어셈블리와 후킹, 타일 그림과 대사, 소리, 에뮬레이터로 확인하기, 롬 확장까지 다룹니다.
롬 해킹 기초 첫 페이지에 롬 분석 노트 목록과 준비물이 있습니다.