롬 해킹 기초모르는 용어는 용어집에서
슈퍼 패미콤
65c816 CPU와 뱅크 주소, 어셈블리와 후킹, 타일 그림과 대사, 소리, 에뮬레이터로 확인하기, 롬 확장까지 다룹니다.
이 갈래는 공통 기초의 16진수·엔디안·압축을 안다고 보고 씁니다. 처음이라면 공통 기초부터 읽어 주세요. 장마다 같은 갈래의 앞 장 내용을 바탕으로 씁니다.
차례
CPU와 65c816
CPU는 명령을 한 줄씩 읽어 실행하는 일꾼입니다. 슈퍼 패미콤의 65c816이 가진 레지스터와 8/16비트 전환을 봅니다.
주소와 뱅크
$80:8000은 "80번 책의 8000쪽"입니다. LoROM·HiROM·SA-1이 롬 파일을 CPU 주소에 어떻게 펼치는지 계산해 봅니다.
어셈블리 기초
LDA·STA·분기·JSR을 하나씩 읽고, 패치 노트에 나온 코드 조각을 직접 해석합니다.
후킹
원래 코드 몇 바이트를 점프 명령으로 바꿔 새 코드로 건너갔다 돌아오게 합니다. 덮어쓴 명령을 다시 실행하는 법과 빈 공간 찾기까지 다룹니다.
그림과 글자
화면은 8×8 타일을 이어 붙인 그림입니다. 타일 바이트를 비트평면으로 읽는 법과 팔레트, 한글 수천 자를 좁은 폰트 칸에 넣는 방법을 봅니다.
대사는 어떻게 저장되나
글자표는 숫자와 글자의 사전, 포인터 표는 목차입니다. 제어 코드와 이어진 대본, 번역이 길어졌을 때 옮길 자리를 봅니다.
소리: SPC700과 S-DSP
본체 CPU와 따로 도는 소리 전용 CPU(SPC700)와 음원 칩(S-DSP), 둘이 값을 주고받는 포트 $2140–$2143을 봅니다.
에뮬레이터로 확인
중단점으로 "어디서 읽나"를 잡고, 입력 스크립트로 같은 장면을 되풀이해 찍고, 정확도가 다른 여러 에뮬레이터에서 같은 결과가 나오는지 봅니다.
롬 확장
롬을 늘리면 헤더의 크기 바이트, 미러, 체크섬이 함께 바뀝니다. 매핑마다 늘릴 수 있는 한계와, 늘리지 않고 자리를 만드는 방법을 봅니다.
장 × 게임 노트
장에서 배운 개념을 한글패치가 실제로 어떻게 썼는지, 게임마다 노트의 해당 절로 바로 갑니다. 노트에 해당 절이 없는 칸에는 그 이유를 적었습니다.
| 장 | 슈퍼 마리오 RPG | 제절초 | 돌격편 | 각성편 |
|---|---|---|---|---|
| 1장 CPU와 65c816 | 해당 절 없음 노트에 CPU 구조를 다룬 절이 없습니다. 명령을 하나씩 읽는 예는 3장에 있습니다. | 해당 절 없음 노트에 CPU 구조를 다룬 절이 없습니다. 명령을 하나씩 읽는 예는 3장에 있습니다. | 해당 절 없음 노트에 CPU 구조를 다룬 절이 없습니다. 명령을 하나씩 읽는 예는 3장에 있습니다. | |
| 2장 주소와 뱅크 | ||||
| 3장 어셈블리 기초 | ||||
| 4장 후킹 | ||||
| 5장 그림과 글자 | ||||
| 6장 대사는 어떻게 저장되나 | ||||
| 7장 소리: SPC700과 S-DSP | 해당 절 없음 버전마다 바꾼 곳에 소리가 없어 노트에서 다루지 않습니다. | 해당 절 없음 버전마다 바꾼 곳에 소리가 없어 노트에서 다루지 않습니다. 곡 표와 곡 재생 함수는 이 장 본문에 있습니다. | ||
| 8장 에뮬레이터로 확인 | ||||
| 9장 롬 확장 |
다른 갈래
공통 기초
어느 게임기를 고치든 필요한 바탕입니다. 롬과 패치, 16진수와 엔디안, 압축, 게임 음악 반복을 다룹니다.
닌텐도 DS
ARM9·ARM7 두 CPU와 파일 시스템, ARM 어셈블리와 후킹, 그림과 대사, SDAT 음악, 에뮬레이터로 확인하기를 다룹니다.
롬 해킹 기초 첫 페이지에 롬 분석 노트 목록과 준비물이 있습니다.