セーブデータアイコン

メモリーカードのセーブデータアイコンについて解説します。

PlayStation のセーブデータのアイコンのスペック

PlayStation のセーブデータのアイコンのスペックは以下の通りです。

PlayStation のセーブデータアイコンのデータ構造

以下のメモリーカード上のアドレスはセーブデータ1の場合です。 16進数を 0x , 2進数を 0b で表します。

PlayStation のメモリーカード管理画面に表示されるアイコンはアドレス0x2060 ~ 0x21FFに描かれています。

アドレス0x2060 ~ 0x207Fがカラーパレットです。

アドレス0x2080 ~ 0x20FFがアイコン0です。

アドレス0x2100 ~ 0x217Fがアイコン1です。

アドレス0x2180 ~ 0x21FFがアイコン2です。

アイコン0, アイコン1, アイコン2を時間で切り替えることによりアニメーションします。

NOëL のセーブデータアイコン

NOëL のセーブデータのアイコンのアニメーションは2種類あります。

アニメーションはセーブするときにランダムで決定されます。

パレット

アイコンのアニメーションは2種類ありますが、カラーパレット (CLUT: Color Lock Up Table) は共通です。

カラーパレットは以下の 32 Byte (アドレス 0x2060 ~ 0x207F)です。

00 00 42 08 08 21 8C 31 10 42 94 52 18 63 9C 73 FF 7F 35 02 C9 00 0F 09 D0 29 AC 14 11 2D B6 3D

2 Byte で1色を表します。

カラーパレットは出現順に0から採番されていて0~F(16色)となります。

CLUT16進数RGB555RGB888
000 00( 0,  0,  0)(  0,   0,   0)
142 08( 2,  2,  2)( 16,  16,  16)
208 21( 8,  8,  8)( 66,  66,  66)
38C 31(12, 12, 12)( 99,  99,  99)
410 42(16, 16, 16)(132, 132, 132)
594 52(20, 20, 20)(165, 165, 165)
618 63(24, 24, 24)(198, 198, 198)
79C 73(28, 28, 28)(231, 231, 231)
8FF 7F(31, 31, 31)(255, 255, 255)
935 02(21, 17,  0)(173, 140,   0)
AC9 00( 9,  6,  0)( 74,  49,   0)
B0F 09(15,  8,  2)(123,  66,  16)
CD0 29(16, 14, 10)(132, 115,  82)
DAC 14(12,  5,  5)( 99,  41,  41)
E11 2D(17,  8, 11)(140,  66,  90)
FB6 3D(22, 11, 15)(181, 107, 123)

ここでは、 CLUT9 を例に計算方法を示します。

アドレス 0x2072 が 0x35, アドレス 0x2073 が 0x02 ですが、 PlayStation のバイトオーダーがリトルエンディアンなので、ヒューマンリーダブルな形式にするために上の桁と下の桁を入れ替えて 0x 02 35 になります。

これを2進数にすると 0b 00000010 00110101 です。

パレットの色は ABGR1555 形式なので、1bit 5bit 5bit 5bit に区切り直して 0b 0 00000 10001 10101 になります。

これを10進数にすると 0 0 17 21 になります。すべてのパレットのアルファチャネルは0なので無視して BGR (0, 17, 21) になります。

BGR よりも RGB の方が一般的なので、 R と B を入れ替えて RGB (21, 17, 0) となります。

この色成分は 5bit なので値域が 0~31 になります。ここでは一般的な RGB888 にするために 255/31 をかけて小数点第一位を四捨五入して RGB (173, 140, 0) になります。

アイコン

ここでは 2種類あるアニメーションのうち、口を開けるパターンを解説します。

アドレス 0x2080 ~ 0x20FF がアイコン0です。アイコン0の左上の画素0行0列目から右へ16画素、その後1行目0列目から右へ16画素、、、と15行目15列まで続きます。

アイコン0 の 0行目のアドレス 0x2080 ~ 0x2087 を抜き出すと以下のようになります。

30 36 00 00 00 00 63 03

1バイトで2画素のカラーパレットの番号を表します。

アイコン0 の 0行目

ここでは、最初の1バイト (30) を例に指定方法を示します。

カラーパレットは16色なので 4bit (0.5バイト)で指定されます。

30 の上の桁と下の桁がそれぞれ0.5バイト相当になります。

PlayStation はリトルエンディアンなので、上の桁と下の桁を入れ替えた 0 3 が、左から0番目と1番目の画素のカラーパレットの番号になります。

これを8バイト繰り返すことによりアイコン0の0行目の16画素のカラーパレットの番号になります。

アドレス 0x2088 ~ 0x208F が1行目、0x2090 ~ 0x2097 が2行目、 ... 、 0x20F8 ~ 0x20FF が15行目と繰り返してアイコン0が完成します。

アイコン0

同様に、アドレス2100 ~ 217Fがアイコン1です。

アイコン1

同様に、アドレス2180 ~ 21FFがアイコン2です。

アイコン2

アニメーション

アイコンのアニメーションは2種類あります。どちらのアニメーションでもアイコン0 は同一の絵柄です。

アニメ0アニメ1

3つのアイコンを時間で切り替えることによりアニメーションを実現しています。

アニメ0
アニメ1

メモリーカード上にはアニメーションの切り替え速度は指定されていません。負荷次第で早くなったり遅くなったりします。

inserted by FC2 system