PSPRPGツクールエミュまとめ

データ構造

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集

RPGツクール2000とRPGツクール2003

RPGツクール2000とRPGツクール2003は内部的にはほとんど同じものです。
表現の簡略化のため、RPGツクール2000とRPGツクール2003のことを総称して「ツクール」「RPGツクール2000」と呼ぶことにします。

BER圧縮整数

ツクールの整数データは全て「BER圧縮整数」という形式で保存されています。
BER圧縮整数については以下のサイトを参照
http://www.stellar.ac/~komai/unix/ber/index.html

BER圧縮整数の仕様上負の数は格納できないはずですが、無理矢理unsigned intにキャストされて格納されています(^^;
例)-1 → 4294967295(0xFFFFFFFF)

単に「整数」とあった場合、特に指定のない限りBER圧縮整数のことを指すこととします。

配列

ツクールのデータの格納方法として一番特徴的なことは配列としての格納です。
ただし配列と言っても配列の中には整数・文字列・生のバイナリデータの全てが格納され、一番厄介なことは配列の中にさらに別の配列データが格納されていることです。ちょうど配列の中に配列がネストされているような感じです。このせいでツクールのデータ構造はかなり複雑になっていますorz

ツクールでは1次元配列と2次元配列の2種類が使用されています。

1次元配列

基本的には
配列番号(整数)
 データサイズ(整数)
  データ部分
配列番号(整数)
 データサイズ(整数)
  データ部分
…
の構造です。生データの中に整数や文字列や別の配列データが入っています。

例)
整数データ
01 01 02 → 01(配列番号:1) 01(データサイズ:1) 02(データ部分)
文字列データ
02 04 54 45 53 54 → 02(配列番号:2) 04(データサイズ:4) "TEST"
注意)
  • 配列バッファ内には終端の'\0'(NULL)は含まれていない
  • 文字列はShift-JISで格納
バイナリデータ
47 84 58 00 00 … → 47(配列番号:71) 84 58(データサイズ:600) 00 00…(データ部分)

配列番号は1から始まります。配列番号に0がきた場合、そこが配列の終端となります。
配列番号が省略された場合、その番号のデータは基本的には0が補完される与えられるが、0以外で補完されることもけっこうあるので注意(マップの大きさなど、ツクールの初期値が補完されることがある)

2次元配列

基本的には1次元配列の時と同じですが、

2次元配列の親要素の要素数(整数)
 2次元配列の親要素の配列番号(整数)
  2次元配列の子要素(1次元配列)
 2次元配列の親要素の配列番号(整数)
  2次元配列の子要素(1次元配列)
…

といったように格納されています。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

記事メニュー
目安箱バナー