DRCSを読んでみる

項目長さ[bit]値の例
unit_separator81f
data_unit_parameter830
data_unit_size2400014c
data_unit_data_byte8*N01 41 21 01 01 02 24 24 00 00
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 0f ff ff
ff ff ff ff f0 00 0f ff ff ff
ff ff ff f0 00 0f 00 00 f0 00
00 00 00 00 0f 00 00 f0 00 00
00 00 00 0f 00 0f 00 00 00 00
00 00 0f 00 0f 00 00 00 00 00
00 0f 0f ff ff 0f ff ff 00 00
0f 0f ff ff 0f ff ff 00 00 0f
0f 00 0f 00 00 f0 00 00 0f 0f
00 0f 00 00 f0 00 00 0f 0f 00
0f 00 f0 f0 00 00 0f 0f 00 0f
00 f0 f0 00 00 0f 0f ff ff 00
f0 f0 00 00 0f 0f ff ff 00 f0
f0 00 00 0f 0f 00 0f 00 f0 f0
00 00 0f 0f 00 0f 00 f0 f0 00
00 0f 0f 00 0f 0f ff ff f0 00
0f 0f 00 0f 0f ff ff f0 00 0f
0f ff ff 00 0f 00 00 00 0f 0f
ff ff 00 0f 00 00 00 0f 0f 00
00 00 0f 00 00 00 0f 0f 00 00
00 0f 00 00 00 0f 0f 00 00 00
0f f0 00 00 0f 0f 00 00 00 0f
f0 00 00 0f 0f ff ff 00 f0 f0
00 00 0f 0f ff ff 00 f0 f0 00
00 0f 0f 00 00 00 f0 f0 00 00
0f 0f 00 00 00 f0 f0 00 00 f0
0f ff ff 00 f0 f0 00 00 f0 0f
ff ff 00 f0 f0 00 00 f0 0f 00
00 0f 00 f0 f0 00 f0 0f 00 00
0f 00 f0 f0 0f 00 0f 00 00 f0
00 ff f0 0f 00 0f 00 00 f0 00
ff f0

unit_separator

data_group_data中のdata_unitを区分するための符号。0x1f(8単位符号的に書けば01/15)固定。

data_unit_parameter

data_unitが何のデータかを示す。

value種類解説
0x20本文制御符号などの字幕本文。
0x28ジオメトリック使用されない(運用規定による)。
0x2c付加音使用されない(運用規定による)。
0x30DRCS (1バイト呼出)DRCS-0以外のパターンデータ。
0x31DRCS (2バイト呼出)DRCS集合のうち2バイトなのはDRCS-0だけなので、実質DRCS-0のパターンデータ。
0x34カラーマップ使用されない(運用規定による)。
0x35ビットマップ文字スーパーでのみ使用可(運用規定による)。

data_unit_size

data_unit_data_byteの長さ。

0x00014c = 0d332

本題

data_unit_data_byte

data_unit_data_byteにはDrcs_data_structureが入る。1バイトDRCSの場合は以下のようになる。

項目長さ[bit]値の例 (hex)備考
number_of_code801定義されている図形の数。
character_set_code841外字集合の指定
character_code821集合内の呼出符号
number_of_font801同時に定義されるフォント数
font_id400以外でも0と見做される
(運用規定より)
mode41階調数や圧縮有無
depth802v+2階調。02なら4階調
width824hexなので36。お間違えなきよう
height824同上
pattern_data8*N00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 0f
ff ff ff ff ff ff f0 00 0f ff
ff ff ff ff ff f0 00 0f 00 00
f0 00 00 00 00 00 0f 00 00 f0
00 00 00 00 00 0f 00 0f 00 00
00 00 00 00 0f 00 0f 00 00 00
00 00 00 0f 0f ff ff 0f ff ff
00 00 0f 0f ff ff 0f ff ff 00
00 0f 0f 00 0f 00 00 f0 00 00
0f 0f 00 0f 00 00 f0 00 00 0f
0f 00 0f 00 f0 f0 00 00 0f 0f
00 0f 00 f0 f0 00 00 0f 0f ff
ff 00 f0 f0 00 00 0f 0f ff ff
00 f0 f0 00 00 0f 0f 00 0f 00
f0 f0 00 00 0f 0f 00 0f 00 f0
f0 00 00 0f 0f 00 0f 0f ff ff
f0 00 0f 0f 00 0f 0f ff ff f0
00 0f 0f ff ff 00 0f 00 00 00
0f 0f ff ff 00 0f 00 00 00 0f
0f 00 00 00 0f 00 00 00 0f 0f
00 00 00 0f 00 00 00 0f 0f 00
00 00 0f f0 00 00 0f 0f 00 00
00 0f f0 00 00 0f 0f ff ff 00
f0 f0 00 00 0f 0f ff ff 00 f0
f0 00 00 0f 0f 00 00 00 f0 f0
00 00 0f 0f 00 00 00 f0 f0 00
00 f0 0f ff ff 00 f0 f0 00 00
f0 0f ff ff 00 f0 f0 00 00 f0
0f 00 00 0f 00 f0 f0 00 f0 0f
00 00 0f 00 f0 f0 0f 00 0f 00
00 f0 00 ff f0 0f 00 0f 00 00
f0 00 ff f0

pattern_data

例では4階調なので1dotに2bit(JavaScriptならMath.log2(v)で出せる)。長さは以下のように求められる。

0x24 * 0x24 * 2 = 0b2592
0b2592 / 0b8 = 0b324

4階調で色情報は無い。
2進数にすると視覚化できたりする。見やすくdot数で改行したのが以下。

000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000
000000000000111111111111111111111111111111111111111111111111111111110000
000000000000111111111111111111111111111111111111111111111111111111110000
000000000000111100000000000000001111000000000000000000000000000000000000
000000000000111100000000000000001111000000000000000000000000000000000000
000000000000111100000000000011110000000000000000000000000000000000000000
000000000000111100000000000011110000000000000000000000000000000000000000
000000000000111100001111111111111111111100001111111111111111111100000000
000000000000111100001111111111111111111100001111111111111111111100000000
000000000000111100001111000000000000111100000000000000001111000000000000
000000000000111100001111000000000000111100000000000000001111000000000000
000000000000111100001111000000000000111100000000111100001111000000000000
000000000000111100001111000000000000111100000000111100001111000000000000
000000000000111100001111111111111111111100000000111100001111000000000000
000000000000111100001111111111111111111100000000111100001111000000000000
000000000000111100001111000000000000111100000000111100001111000000000000
000000000000111100001111000000000000111100000000111100001111000000000000
000000000000111100001111000000000000111100001111111111111111111111110000
000000000000111100001111000000000000111100001111111111111111111111110000
000000000000111100001111111111111111111100000000000011110000000000000000
000000000000111100001111111111111111111100000000000011110000000000000000
000000000000111100001111000000000000000000000000000011110000000000000000
000000000000111100001111000000000000000000000000000011110000000000000000
000000000000111100001111000000000000000000000000000011111111000000000000
000000000000111100001111000000000000000000000000000011111111000000000000
000000000000111100001111111111111111111100000000111100001111000000000000
000000000000111100001111111111111111111100000000111100001111000000000000
000000000000111100001111000000000000000000000000111100001111000000000000
000000000000111100001111000000000000000000000000111100001111000000000000
000000001111000000001111111111111111111100000000111100001111000000000000
000000001111000000001111111111111111111100000000111100001111000000000000
000000001111000000001111000000000000000000001111000000001111000011110000
000000001111000000001111000000000000000000001111000000001111000011110000
000011110000000000001111000000000000000011110000000000001111111111110000
000011110000000000001111000000000000000011110000000000001111111111110000

0をスペースに置き換えるとこう↓。

                                                                        
                                                                        
            11111111111111111111111111111111111111111111111111111111    
            11111111111111111111111111111111111111111111111111111111    
            1111                1111                                    
            1111                1111                                    
            1111            1111                                        
            1111            1111                                        
            1111    11111111111111111111    11111111111111111111        
            1111    11111111111111111111    11111111111111111111        
            1111    1111            1111                1111            
            1111    1111            1111                1111            
            1111    1111            1111        1111    1111            
            1111    1111            1111        1111    1111            
            1111    11111111111111111111        1111    1111            
            1111    11111111111111111111        1111    1111            
            1111    1111            1111        1111    1111            
            1111    1111            1111        1111    1111            
            1111    1111            1111    111111111111111111111111    
            1111    1111            1111    111111111111111111111111    
            1111    11111111111111111111            1111                
            1111    11111111111111111111            1111                
            1111    1111                            1111                
            1111    1111                            1111                
            1111    1111                            11111111            
            1111    1111                            11111111            
            1111    11111111111111111111        1111    1111            
            1111    11111111111111111111        1111    1111            
            1111    1111                        1111    1111            
            1111    1111                        1111    1111            
        1111        11111111111111111111        1111    1111            
        1111        11111111111111111111        1111    1111            
        1111        1111                    1111        1111    1111    
        1111        1111                    1111        1111    1111    
    1111            1111                1111            111111111111    
    1111            1111                1111            111111111111    

というわけで、「厩」が符号化されていた、というわけです。

コメントする