Resident Evil HD Remaster

Resident Evil 0 HD Remaster

Resident Evil Revelation

Resident Evil Revelation 2


위에 언급된 타이틀에 적용된 gmd파일은 모두 동일하다.


gmd파일은 HexEditor로 열어보면

0x20 - 0x21이 텍스트정보의 길이다.



리틀엔디안으로 표현되어 있으며,

B5 68 -> 68 B5 만큼의 텍스트 정보가 있다.


gmd파일의 끝부분에 텍스트가 있으며 끝부분부터 68 B5 길이만큼 문자를 드래그 해서 보면


파일정보가 끝나는 부분부터 텍스트가 나타나는것을 알 수 있다.

이를 바탕으로 열어보면



'Localization' 카테고리의 다른 글

Capcom *.gfd 파일 구조  (0) 2016.02.26
블로그 이미지

SherryBirkin

,

Resident Evil HD Remaster

Resident Evil 0 HD Remaster

Resident Evil Revelation

Resident Evil Revelation 2


위의 4개의 타이틀에서 사용하는 gfd파일은 모두 형태가 동일하다.


HexEditor로 gfd파일을 열어보면 아래와 같은 형태가 나온다.


문자 한개당 16바이트로 이루어져 있다. 


문자 (빨간색 박스)는 유니코드 2바이트 

문자위치 (초록색 박스)는 3바이트

문자크기 (파란색 박스)는 3바이트

Offset-문자크기 편차 (주황색박스) 는 1바이트의 정보를 가지고 있다.



문자위치 (X, Y)는 tex(비압축형태) 저장된 이미지의 좌표를 말한다.

리틀엔디안 (작은값이 먼저 표현되는 형태) 으로 저장되어 있으며,

여기에 또, 주의 할 점이 2개의 값이 1.5 바이트로 저장되어있다는 것이다. 


아래의 첫번째 문자 '!'로 보면

좌표값이 08 00 00 이며, 리틀엔디안으로 나타내면 00 00 08로 나타난다.

위에서 언급했듯이 2개의 값이 1.5바이트로 저장되어 있다고 했으니,

000, 008이 될것이다. 16진수를 10진수로 바꿔보면 0, 8이란 수치가 나오게 된다.


아까 값이 X, Y 형태였는데, 리틀엔디안으로 바뀌면서 Y, X로 바뀌었다.

그러므로 문자 '!' 의 좌표는 X좌표 8, Y좌표 0 


문자크기 (Width, Height)는 말 그대로 Tex에 저장된 문자 이미지의 크기를 말한다.

마찬가지로 리틀엔디안으로 표기되어 있다. 문자위치에 설명한것과 동일하므로

위와 똑같이 계산해보면,

08 00 02 -> 02 00 08 

020 008 -> 32, 8 

'!' 문자의 크기는 Height 32, Width 8 로 나타난다.


Offset (문자크기편차)은 쉽게말하면 문자를 한번 뿌리고나서 다시 써줄 위치를 더하는 값이라고 보면 된다.

처음에 이미지를 붙이고 같은 위치에 다른문자이미지를 붙여넣게되면, 문자가 겹치게 되는것을 막기위한 값이라고 보면 쉽다.

크게 차이나 봤자 문자크기의 Width와 -1~3정도밖에 차이 안난다.


이를 바탕으로 추출해서 보면 아래와 같이 확인 해 볼수 있다.

빨간색 네모가 전체이미지에서 추출한 현재문자 '!'의 값이다.


'Localization' 카테고리의 다른 글

Capcom *.gmd 파일 구조  (1) 2016.02.26
블로그 이미지

SherryBirkin

,

DataGridView 이벤트에서 RowPostPaint를 추가하고


아래와 같이 코드를 넣으면 된다.

// 주석은 16진수 (4자리)


private void Gridview_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
            DataGridView grid = sender as DataGridView;
            //String rowIdx = (e.RowIndex + 1).ToString("X4");
            String rowIdx = (e.RowIndex + 1).ToString();
 
            StringFormat centerFormat = new StringFormat()
            {
                Alignment = StringAlignment.Center,
                LineAlignment = StringAlignment.Center
            };
 
            Rectangle headerBounds = new Rectangle(e.RowBounds.Left, e.RowBounds.Top,
                                                    grid.RowHeadersWidth, e.RowBounds.Height);
            e.Graphics.DrawString(rowIdx, this.Font, SystemBrushes.ControlText,
                                  headerBounds,centerFormat);
}


블로그 이미지

SherryBirkin

,