안녕하세요 새항아리 입니다.

 

제목 : GBA 한글화 쌩초보 강좌 - 8 (2)

부제목 : 한글폰트를 넣고 대사를 수정해보자

 

이번 강좌는 그림이 많다보니 2파트로 분리했습니다. 1파트는 한글폰트를 넣는 부분이며

2파트는 그것으로 대사를 직접 수정하는 방법과 대사포인터에 대한 이야기를 하겠습니다.

 

그럼 강좌 시작하도록 하겠습니다.

 

파트1에서 한글 폰트를 집어넣는 일까지 했습니다. 이제는 그 글자들로 직접 출력하게하면 되는데. 여기에서 포인터가 사용됩니다. 근데 죄송스럽게도 하로보츠의 대사포인터를 찾지 못했습니다.

 

이 이야기는 오늘 강좌의 맨 마지막 부분에서 다루도록 하겠습니다.

 


사용자 삽입 이미지

 

 

대사위치를 찾아가봅시다. 수정할 대사는

혹성 선라이즈

이 별에는 7개의 태양이 있다.

라는 문장입니다.


 

사용자 삽입 이미지

 

 

양이 많을때에는 파일로 뽑아서 적용하는 것도 나쁘지는 않으나 저는 늘 창으로만 편집했습니다.

이유는 어느부분에서 에러가나고 어느부분에서 글자가 모자라는지 확실히 파악도 가능하고 즉시즉시 변경사항을 볼수 있기 때문이죠.

 

뭐 편하실데로 하시기 바랍니다.


 

사용자 삽입 이미지

 

 

일본어 롬에서 가장 짜증나는 부분이 나왔습니다.

바로바로 띄어쓰기가 없고 1바이트 문자를 따로 쓰는 경우인데요.

혹성은 한자로 2바이틀 먹었기 때문에 그냥 그대로 쓰더라도 무리가 없지만

선라이즈는 사누라이즈 라고 5글자로 처리했습니다.

그런데 사누라이즈가 전부 1바이트이니 총 크기는 5바이트입니다.

 

게다가 일본어에는 없는 띄어 쓰기를 하려다보니 띄어쓰기 1바이트 글자 2바이트 2개로

2글자를 못썼습니다. 어쨋건 출력이 되는지 롬을 켜봅시다.


 

사용자 삽입 이미지

 

 

출력이 되는군요.. 그런데 비좁습니다.

이것을 해결하기 위해 포인터를 찾아봅시다.


 

사용자 삽입 이미지

 

 

찾기를 눌렀지만..


 

사용자 삽입 이미지

 

 

없습니다.. ㅠㅠ 난감합니다. 이걸 어쩐다..

포인터가 없는 롬도 많습니다. 아니 포인터를 숨긴 롬도 많구요..

이건 무슨 뜻이냐 하면 대사만 통채로 모여있다면 어딘가에서는 그 대사를 부르는 녀석이 꼭 있어야합니다.

 

왜냐하면 뒷 배경 변경등의 코드가 대사스크립트내에 없다는 것은 그런 코드가 따로 있다는 것이고 그 코드에서 대사를 불러 출력시킬것이기 때문이죠..

 

그런데 왜 대사 포인터를 찾아도 안보이는 것일까요.. 이것은 제가 생각할때 상대포인터 테이블이 따로 있는 것 같습니다.  또 슬슬 어려워 지신다는 분들을 위해 예를 하나 들어보도록 하겠습니다.

 

만약 도서관에 연애에 관한 논문을 찾으러 갔습니다. 논문은 각기 번호가 있어서 찾을 논문인 [사랑과 전쟁] 이라는 논문 번호인 49EB56 주세요 하고 논문번호를 불렀더니 안내 데스크에서 찾을수 없다고 합니다.

 

이게 어떻게 된거냐고 알아봤더니 연애 논문들은 통채로 모아서 연애논문-XX번 이라는 번호를 새로 메겼다고 하네요. 그래서 사랑과 전쟁의 논문을 찾으려면 연애 논문쪽에서 23번 주세요 해야 받을수 있다네요..

 

이것이 상대포인터 입니다. 그러니까 절대 주소 포인터가 있습니다. 이것은 위의 예로 보면 논문번호(여기는 49EB56번)입니다. 그런데 이게 안찾아진다는 것은 상대주소를 쓰고 있다는 것입니다.(여기서는 연애논문-XX번) 이렇게 논문들이 연애논문의 몇번이라고 적혀 있는 목록표가 상대포인터테이블입니다.(여기서는 연애논문-1번 사랑이란? 연애논문-2번 사랑사랑내사랑 <- 이런 목록들)

 

그런데 우리는 절대주소 즉 논문번호밖에 모른다 이말입니다. 그러면 상대포인터테이블 자체를 알아내면 수정할수 있지만 지금은 모르는 상태이니 어쩔수 없다는 의미입니다..

(강좌 마지막 부분에서 설명드리겠습니다.. {계속 미루는 분위기 ^^;})

 

 

사용자 삽입 이미지

 

 

어쨋건 할때까지는 해봅시다. 여기서 FD가 줄내림 제어코드라는 것은 제어코드 강좌시간에 찾아봤었죠? 그럼 이 코드를 뒤로 미루고 이 위치에 글자를 써보면 어떻게 될까


 

사용자 삽입 이미지

 

 

우선 아까 '혹성 선라' 까지 썻으니 '이즈' 라는 글자를 써보고 FD 코드를 써보니


 

사용자 삽입 이미지

 

 

출력이 되는군요. 하지만 다음 줄에 넣을 대사 공간이 줄었습니다.


 

사용자 삽입 이미지

 

 

그 다음줄 대사를 덤프해서

'이 별에는 7개의 태양이 있다' 라는 글을 넣으려고 하는데


 

사용자 삽입 이미지

 

 

모자랍니다. 공간 부족.. 우선 출력 잘되는지 살펴봅시다.


 

사용자 삽입 이미지

 

 

출력은 잘 되는군요. 그런데 '이 있다'를 못썼으니 이거이거.. 어떻게 할지 생각해봅시다.

이번시간은 대사포인터 강좌가 아니라 말줄이기 꼼수스킬 강좌 같다는 생각이..


 

사용자 삽입 이미지

 

 

저기 보니 00 코드는 안쓰는 코드 같고 FD 는 한줄내림 FF는 문장 끝을 말하는 듯하니까..

이것을 수정하면 될것 같아서


 

사용자 삽입 이미지

 

 

이 부분을 수정해 FF만 남기고 사용했더니


 

사용자 삽입 이미지

 

 

출력이 태양이 있 까지 되는것은 둘째치고 기다림이 없이 그냥 넘어가버리네요..

(즉 문장을 읽을만한 1-2초의 여유시간이 사라졌다는 말)


 

사용자 삽입 이미지

 

 

극악의 말줄이기가 필요한 시점.


 

사용자 삽입 이미지

 

 

그냥 이별에는 을 없애고 7개의 태양이 있다로 출력하라고 표현해버렸습니다.

어투는 이상해도 의미는 전달될것이니까. 이런식의 말줄이기를 해버린것이긴 하나..

맘에 안드는 느낌..


 

사용자 삽입 이미지

 

 

출력은 제대로 되는군요.. 다음 문장도 번역해 넣어보면


 

사용자 삽입 이미지

 

 

여기도 말줄이기 센스

각각의 태양은 클라우드스트림라고 불리우는 특수한 구름에 의해 둘러싸여 있어

이 말을

각 태양은 클라우드스트림이라는 특수구름으로 싸여

이렇게 줄였습니다.


 

사용자 삽입 이미지사용자 삽입 이미지
 

 

출력은 되네요.,. 그 다음 문장도 번역해 넣었습니다. 하지만 더이상은 못하겠습니다.

역시 말줄이기는 스스로의 짜증지수를 체크해볼수 있는 좋은 물건인듯 합니다. ^^;

 

 

이제는 직접 과정을 보여드리지는 못하지만 포인터 부분을 말씀드리겠습니다.

 

절대주소 포인터가 찾아진경우는 어떻게 할까요..

이때는 아주 간단합니다. 롬의 여백(폰트확장에서 롬을 확장한 곳 같은부분이나 원래 있던 원본롬의 뒷부분에서 안쓰는 FF나 00으로 채워져 있는 부분)의 임의 주소로 바꾸고

그 위치에 대사를 쓰면 됩니다.

 

이건 무슨 의미냐 하면

101번째 논문(원래 주소)을 뽑으려고 했는데 논문이 달랑 한장(대사공간 부족..)밖에 안되서 수정을 하려고 해도 용지가 부족해서(말줄이기 스킬을 사용하지) 못할경우 비어있는 논문번호인 2123번(롬의 여백)에 논문을 작성하고

"101번째 논문을 불러와" 라고 적힌 곳(포인터)을 지우고 "2123번 논문을 불러와" 라고 바꾸는 것입니다.

 

이해가 조금 되실지 모르겠네요.

그러면 마지막으로 상대주소 포인터 예제를 하나 살펴보도록 하겠습니다.

모두의 쇼기 코드중 일부분으로 예제를 만들어봤습니다.

0F00 1000 0800 0B00 "優しい色した空を映して" FFFF ~~코드~~

0F00 0D00 4C00 0B00 "高層ビリが燒けに綺麗だ" FFFF

 

<- 더파이팅 엔딩곡인 파란하늘의 종이비행기 가사일부분입니다.

 

이 코드 내에 상대포인터가 있습니다. 0F00은 문장이 출력될것이라는 코드 1000과 0D00은 내부인자코드(별로 안중요 하니 무시) 0800이 상대포인터 입니다. 0B00은 문장길이 여기서는 11자이죠..

두글자씩 거꾸로 쓰면 000B니까 11자가 됩니다.

그리고 문장.. 그리고 FFFF는 문장끝 코드입니다.

 

그런데 이걸 한국어로 번역하니

"부드러운 빛을 띤 하늘을 비춘" , "고층 빌딩이 아름답게 붉게 빛나고 있어" 가 됩니다.

띄어쓰기까지 17, 21자입니다. 6자와 10자나 초과. 이걸 저기에 끼워 맞추려 말줄이기를 해봐도

부드럽게 하늘을 비춘 <- 11자

빌딩이 예쁘게 붉게 빛나 <- 13자입니다.

이렇게는 의미도 안살고 안예쁘죠..


이것을 어떻게 해야하느냐. 우선 상대포인터를 살펴봅시다.

0800은 2글자씩 거꾸로 쓰면 0008 이 되네요.

4C00은 2글자씩 거꾸로 쓰면 004C가 되고.. 이것은 76번째라는 소리입니다.

 

이걸 변환하려면.. 우선 롬의 여백을 찾아야 하는데 문제는 대사의 시작과 FFFF이상 벋어 나면 안된다는 점입니다. 이것이 상대포인터의 단점입니다.

 

그럼 어떻게 해야하느냐.. 상대포인터의 첫번째 위치를 찾아갑니다. 만약 4DDA8부터 대사가 시작된다면 A8DD04를 찾습니다.

이것은 무슨 뜻이냐면 대사를 통으로 옮긴다는 겁니다.

즉 논문을 담을 문서철이 300개 들이 문서철이라 문서를 추가하는 자체가 안되면 더 큰 문서철에 옮겨야 겠죠?

문서를 늘이기(대사공간 부족으로 상대포인터 사용을) 위해 전체문서(전체 대사)를 다른문서철(롬의 여백)에 옮겨 문서철의 여백(비어있는 상대포인터 주소)에 넣을 문서를 넣고(대사 입력) 문서 목록(원 코드)에는 그 문서 찾으려면 이쪽(새로 입력한 상대포인터주소)을 살펴보라고 적어놓으면 되는 겁니다..

 

대사를 통으로 옮겨서 이제는 4000번째(16진수) 주소 이후가 비어있다면..

 

0F00 100000400B00 "優しい色した空を映して" FFFF ~~코드~~

0F00 0D0020400B00 "高層ビリが燒けに綺麗だ" FFFF

 

이부분만 바꾸고

4000번째 주소부터 "부드러운 빛을 띤 하늘을 비춘" FFFF 그리고

4020번째 주소부터 "고층 빌딩이 아름답게 붉게 빛나고 있어" FFFF 를 집어넣으면 된다는 겁니다.

문장 종료코드는 넣어주는 정도의 쎈스

 

그러면 출력하려고 롬이 돌아가다가 다음 문장 어딧냐는 것에 0040위치 즉 4000번째 위치에 있어 라고 나오니 4000번째 주소에 가서 문장을 찾아다 뿌려줄것이고 다음 문장도 그런식이 될것입니다.

 

이번 강좌는 너무 길었다랄까요. 상당히 피곤한 강좌였습니다. 사실 절대주소포인터때문에

샤이닝소울과 골프천재탄도, 나루토 RPG 등 여러 롬을 열어서 스샷도 찍고 대사도 찾았는데 다들 포인터가 감춰진듯 안보이더라구요..(제가 급해서 대충봐서 일수도.,. ^^)

그래서 어쩔수 없이 말로 포인터부분을 설명한 것이고 그점 양해 바랍니다.

 

어쨋건 이제 대사는 이런식이라는 것을 아셨을겁니다.

전체 대사를 바꾸려면 이런식으로 한줄한줄 바꿔나가는 수밖에 없습니다.

그래서 한글화가 몇퍼센트냐고 묻는게 정말 매너가 없다는 소리를 들는 것입니다.

사실 이건 노가다의 극치입니다. 노가다를 하고 있는 사람한테 일 고따구로 한다고 아니면 아직도 못했냐고 아니면 얼마나 했냐고 자꾸 물어보면 더 성질나겠죠..

 

사실 이 강좌는 여기까지가 다지만 실제에서는 이제부터 시작인것입니다. 여기까지 롬을 뜯어보시고 분석해보시고 한글폰트를 넣으신 분이라면 대사의 양에 비례해서 한숨이 나올것이라고 생각합니다..^^;

 

그럼 다음 강좌가 벌써 마지막 강좌가 되었네요. 다음 강좌는 이제 별거 없습니다.

패턴을 만들고 압축된 이미지를 수정하는 방법과 로고 넣고 릴리즈 하기 위해 IPS를 뽑아내는 정도를 다룰듯 합니다. 그럼 이만 줄입니다.

댓글을 달아 주세요

  1. Favicon of http://blou.tistory.com Bleu 2009.04.21 12:22 신고  address  modify / delete  reply

    아흑.. 힘드네... ㅠ.ㅠ

  2. 비색안 2009.05.25 00:04 신고  address  modify / delete  reply

    ...한글화를 하는 게 얼마나 힘든지 잘 알게됬습니다. ;_;

티스토리 툴바