정보/게임

FF5 for Android Save file 구조

겐도 2014. 1. 7. 23:23

참고. http://www.todal.net/185


0x0000 ~ 0x1FFF (8192Byte)는 파일 헤더 부분.

0x2000, 0x4000, ... 0x20000까지 각각 세이브 슬롯. 1~15번 + 임시저장 슬롯.

이하 구조는 베이스 주소로 부터의 offset이다.(가령 3번째 슬롯이라면 0x6000 + 오프셋으로 계산)


OffsetBytes
0x00084Playing Time
0x00204Money(Gil)
0x00241must 0
0x0025~0x004331소모성 item(0x01~0x1F)<=99
0x0044~0x00496소환수 item(0x20~0x25)1 이면 충분
0x004A~0x0114203그외 item(0x26~0xf0)<=99
0x01151must 0 (0xF1 item)
0x0116~0x012920주요 quest item(0xF2~0x105)1 이면 충분
0x0150~0x03572*n소지품 순서
0x03BA~0x03E1...Skills - F8 FF*8 00 00 FC FF 0F 21*00 F8 FF*3 01
0x0419~케릭터 1
0x051D~케릭터 2
0x0621~케릭터 3
0x0725~케릭터 4
0x0829~케릭터 5
0x13AC4Checksum


아이템은 0x0150~ 영역에 순서가 저장되어 있다. 2byte씩의 item code array이다. http://www.gendoh.com/2511314 참조. 새로운 아이템을 추가하고 싶다면 이 array에 해당 item code를 추가시킨 후 0x0024 + item code 위치에 있는 값을(아마 처음엔 0) 셋팅해 준다.


아래는 케릭터별 데이터. 시작 주소 기준의 offset이다.

OffsetBytes
0x00...케릭터 이름: Pascal String with UTF-8
0x334Exp
0x372HP
0x392MP
0x41~0x5925직업별 레벨
0x91~0x9A2*5착용장비:오른손-왼손-머리-몸통-장식
0xE0~0xEF16어빌리티 E0 FF*15


이름은 첫번째 바이트가 길이를 의미하고(Pascal style string) 이후 UTF-8 형식으로 저장되어 있다.

이름 고칠 일은 드물텐데 아마 현재 케릭이 누구인지 확인용 정도로 쓰면 될듯하다.


마지막 0x13AC offset의 Checksum 영역.

보통은 덧셈 뺄셈 잘하라고 하는데.. 간단하게는 돈이나 시간(Playing Time)과 자리 바꾸기 해도 되고.

Checksum의 값은 offset 0x0000~0x13AB까지의 합이다.

Signed BYTE로 읽어서 Signed Long(4byte)으로 덧셈을 하면 된다. Type Casting은 알아서 잘...


덧1)

아.. 모든 타입은 Little Endian


'정보 > 게임' 카테고리의 다른 글

FF5 for Android/iOS 아이템 코드표  (0) 2014.01.07