RGSS Table 직렬구조 메모
https://github.com/zh99998/OpenRGSS/blob/master/lib/openrgss/table.rb#L49
OpenRGSS의 unpack 코드를 참고하여 Table 구조의 바이트 구조를 정리했다.
...
0x000001D992EEF216 75 3a 0a 54 61 62 6c 65 u:.Table
0x000001D992EEF21E 02 1c 07 03 00 00 00 14 ........
0x000001D992EEF226 00 00 00 0f 00 00 00 03 ........
0x000001D992EEF22E 00 00 00 84 03 00 00 4c ...?...L
...
- 02 = 총 데이터 크기의, 자료형 크기 (2바이트)
- 1c 07 = 0x71c = 1820B = 20 + 1800 = 4Byte * 5개 + 2Byte * 900개 = 총 데이터 크기
- 03 00 00 00 = 0x3 = @size = 3 = 3차원 배열
- 14 00 00 00 = 0x14 = @xsize = 20 = 맵 가로 길이
- 0f 00 00 00 = 0xf = @ysize = 15 = 맵 세로 길이
- 03 00 00 00 = 0x3 = @zsize = 3 = 맵 레이어 개수
- 84 03 00 00 = 0x384 = @xsize * @ysize * @zsize = 900 = 타일 id 개수
- 4c 00 ... = 이후 2바이트씩 900개의 타일 id가 직렬로 나옴 (레이어#1: 300개, 레이어#2: 300개, 레이어#3: 300개)
아래는 Table을 불러오는 코드 작성 후 결과이다.
Start reading "marshals/Data/Map001.rxdata"
object of class RPG::Map
:@bgm
object of class RPG::AudioFile
:@volume
100
:@name
"015-Theme04"
:@pitch
100
:@events
{
}
:@tileset_id
1
:@bgs
object of class RPG::AudioFile
:@volume
80
:@name
""
:@pitch
100
:@autoplay_bgm
true
:@data
User-defined class Table
- Dimension = 3
- SizeX = 20
- SizeY = 15
- SizeZ = 3
- ElementCount = 900
:@autoplay_bgs
false
:@height
15
:@encounter_step
30
:@width
20
:@encounter_list
[
]
댓글
댓글 쓰기