대사 확장

Lee0701 (토론 | 기여)님의 2025년 9월 28일 (일) 09:43 판 (작업 과정)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

번역된 대사의 크기가 원본 게임 대사의 크기보다 커졌을 경우, 여유 있는 공간으로 대사 데이터를 옮기고 추가적으로 길어진 대사를 모두 읽을 수 있도록 프로그램을 수정하는 작업.

작업 과정[편집]

먼저 대사 포인터가 어디 있는지 알아내야 한다. 대사 포인터는 대사 시작 위치를 기록해 놓은 정보로, 프로그램이 대사를 읽어올 때 가장 먼저 참조하는 데이터이다.

대사가 많은 게임에서는 대사를 여러개씩 묶어놓고 상대 포인터로 참조하는 경우가 많다. 상대 포인터는 보통 테이블 형식으로 되어있어 대사가 모여있는 구간 앞에 불규칙하게 늘어나는 숫자들이 늘어서 있다면 포인터 테이블일 가능성이 높다.

이 포인터 테이블과 거기에 딸린 대사 데이터의 크기가 번역 후에 더 커져서 다음 데이터 영역을 침범하게 되었다면 대사 확장이 필요하다. 먼저 롬 확장에서 늘어난 빈 공간으로 테이블을 포함한 모든 대사 데이터를 옮긴다. 그리고 포인터 테이블을 가리키는 포인터를 찾아 새로 옮긴 대사 위치로 변경해주는 것이 대사 확장 작업의 기초이다.

GBA 소프트의 경우 롬 뱅크가 따로 나뉘지 않고 32비트 주소를 처리할 수 있기 때문에 이 작업이 대체로 간단하지만, 뱅크 용량이 한정되어 있고 뱅크 교환이 필요한 패미컴 등 8비트 기종에서는 코드 수정 역시 필요하다. 게다가 불어난 대사 데이터의 전체 크기가 뱅크 하나의 크기를 넘어간다면 대사 뱅크 분할 작업도 필요하다.

관련 문서[편집]