모드강좌

CSF 파일 포멧

LV2 2007. 8. 26. 01:11
강좌라고 하긴 뭐하지만 다른 카테고리 만들기 귀찮아서 여기 넣었다.

스트링파일 헤더부분:
[공백FSC] [뭔지 알려지지 않은 플래그, 4bytes ]  [스트링 수, 4bytes] [스트링 수, 4bytes]
[0, 4byte]  [언어코드, 4bytes]
4bytes... -> 32bit형 unsigned integer라고.. 음 ㄱ-;; 언어마다 조금씩 그 형식의 variable을 부르는 사투리가 다르므로 여기서는 패스.

그 이후로는 데이터, LBL,RTS가 반복된다.

데이터 부분:
[공백LBL] [4byte. 1혹은 다른 어떤 값. 대부분의경우 1이지만, ExtraData가 있는 경우에만 다른 값이다.]
[길이, 4byte] [라벨, Ascii로 된 string. 길이만큼의 byte]

[공백RTS][1 (4byte)][길이,4byte][ 스트링(길이만큼) ]
스트링 부분은 그냥 UTF8 데이터여도 되었겠지만 그렇게 만들어지지 않았다.
utf8의 한 character는 2byte를 차지하는데,
그 2byte를 각각 not연산으로 bitwise invert한 것이 들어간다.
너무 고급언어라서 not연산으로 character를 invert할 수 없다면,
character를 그 byte에 해당하는 숫자로 바꾸는 것이야 되겠지... (설마 ㅠㅠ)
그 값을 65535에서 빼면 된다.

길이에 특이한점이라면? 길이로 지정된 만큼의 2배의 byte를 [스트링]부분이 차지한다.
몇 wide character인지가 길이로 저장되어있고, 한 wide character당 2byte니 정상이다 ㄱ-

Extra Data(만약 있다면) => [길이,4byte][데이터 (Ascii로된 string.) 아까 적힌 길이만큼의 byte]
C&C3에는 Extra Data가 없다. -_-;; RA2와 제로아워에서 본듯.


무심코 여태 넘겼는데, LBL, RTS, FSC는 각각 LBL, STR, CSF를 거꾸로 놓은 것이다 (-_-)

'모드강좌' 카테고리의 다른 글

C&C3의 BannerCarrierUpdate  (0) 2007.09.17
jonwil의 도구 모음  (0) 2007.09.02
빌더 버그.  (0) 2007.08.29
MOD SDK 컴파일 스크립트 다른 버전  (0) 2007.08.25
모드 SDK로 모드 컴파일 하는 법  (0) 2007.08.25