[PR]ベビー用品はたまひよ♪:子育てが楽しくなる便利アイテムいっぱい
[MEMO] - 412utl等々。
NMP-412X関連備忘録(間違い指摘・アドバイス歓迎)
MP3、WMAのタグ関連
・MP3のタグはSJIS、WMAはUNICODE。
・韓国ファームではWMAの日本語タグは表示可能。→UNICODEフォントを持っている?
・韓国ファームではMP3の日本語タグはハングルに化ける。→韓国語のMP3TagはKSコードで書かれている?
・化けたハングルは日本語の文字数と同じ文字数にはならない。→謎
・韓国ファームはUNICODEとKSコード両方のフォントセットを持っている? それともUNICODEだけを持っていてKSコード→UNICODEの変換テーブルを持っている?
・ファイルナビゲートモードやMP3がタグ情報を持っていない場合に表示されるファイル名は日本語表示される。→ファイル名はUNICODEで扱っているらしい
ファーム形式等
・ファームの*.sはMotorolaS形式の機械語ファイル(nkさんに感謝)。
・機械語フォーマットにはIntel Hex形式とMotorolaS形式がある(nkさんに感謝)。
モトローラSフォーマット&インテルHEXフォーマット解析(nkさんに感謝)
・ファームのサムチェックは無い。
・3450b用FM初期値設定ファイル(StmpSys_3410.s)の書換(初期設定値を関東キー局に)(by inkyoさん)
韓国ファーム用の関東キー局ベースの初期値
--------------------------------------
kHz 76.1 76.4 78.0 78.6 79.5
&H 4429 702A B030 0833 8C36
--------------------------------------
kHz 80.0 81.3 84.7 76.0 76.0
&H 8038 943D DC4A E028 E028
--------------------------------------
kHz 76.0 76.0 76.0 76.0 76.0
&H E028 E028 E028 E028 E028
--------------------------------------
kHz 76.0 76.0 95.7 101.7 107.7
&H E028 E028 D475 448D B4A4
--------------------------------------
StmpSys_3410.sをテキストエディタで開き、3175〜3179行目を下記の内容と貼り替えます。
これでファームの再更新をしてもFM局の設定はStmpSys_3410.sから反映されるので安心です。
-------------------------------------------------------------------------------------
S1213BED55551400000F289C0AABAA0900000714CE045555040C5C010000004429014B
S1213BF7000000702A01000000B030010000000833010000008C360100000080380178
S1213C01000000803801000000943D01000000DC4A01000000E02801000000E02801DD
S1213C0B000000E02801000000E02801000000E02801000000E02801000000E028016A
S1213C15000000D47501000000448D01000000B4A40100000000000000000000000018
・自分用のFM初期値の作り方(by inkyoさん)
1.修正前の内容から韓国周波数が埋め込まれている部分をさがし、見やすいようにブランクを入れる。
-------------------------------------------------------------------------------------
S1 213BED 55551400000F289C0AABAA0900000714CE04555504 0C5C 01000000 0C5C 01 50
S1 213BF7 000000 0C5C 01000000 0C5C 01000000 0C5C 01000000 0C5C 01000000 FC66 01 A5
S1 213C01 000000 AC6B 01000000 CC6E 01000000 9C76 01000000 147C 01000000 3C86 01 E7
S1 213C0B 000000 0C8E 01000000 2C91 01000000 4C94 01000000 3498 01000000 549B 01 A0
S1 213C15 000000 749E 01000000 94A1 01000000 B4A4 01000000000000000000000000 EB
2.自分の好きな周波数の設定値を計算し変換後の値に打ち変える。
-------------------------------------------------------------------------------------
S1 213BED 55551400000F289C0AABAA0900000714CE04555504 0C5C 01000000 4429 01 50
S1 213BF7 000000 702A 01000000 B030 01000000 0833 01000000 8C36 01000000 8038 01 A5
S1 213C01 000000 8038 01000000 943D 01000000 DC4A 01000000 E028 01000000 E028 01 E7
S1 213C0B 000000 E028 01000000 E028 01000000 E028 01000000 E028 01000000 E028 01 A0
S1 213C15 000000 D475 01000000 448D 01000000 B4A4 010000000000000000000000 00 EB
3.チェックサム計算のために計算対象部分とその他の部分をブランクをいれて見やすくする。
-------------------------------------------------------------------------------------
S1 213BED55551400000F289C0AABAA0900000714CE045555040C5C01000000442901 50
S1 213BF7000000702A01000000B030010000000833010000008C3601000000803801 A5
S1 213C01000000803801000000943D01000000DC4A01000000E02801000000E02801 E7
S1 213C0B000000E02801000000E02801000000E02801000000E02801000000E02801 A0
S1 213C15000000D47501000000448D01000000B4A401000000000000000000000000 EB
4.「バイトカウントからチェックサムの前までのデータ値をバイト単位に加算した結果の1の補数」を算出して後ろ2文字を書換え、余分な空白を削除すれば出来上がり。
-------------------------------------------------------------------------------------
S1 213BED55551400000F289C0AABAA0900000714CE045555040C5C01000000442901 4B
S1 213BF7000000702A01000000B030010000000833010000008C3601000000803801 78
S1 213C01000000803801000000943D01000000DC4A01000000E02801000000E02801 DD
S1 213C0B000000E02801000000E02801000000E02801000000E02801000000E02801 6A
S1 213C15000000D47501000000448D01000000B4A401000000000000000000000000 18
※チェックサム計算ツールは各自で探して下さい。私はバイナリエディタの
XEDITのオプション機能の「バイトサム計算」を利用しています。
リソース関連
・フォント、ロゴ、その他諸々のリソースデータはほぼ100%がresource_3410.bin内に(子供川ニダ太郎さんに感謝)。
・フォント等ベタデータのヘッダ形式。
例)01 00 00 1E 00 00 03 00 00 0C 00 00 10 00 00
インデックス番号 : 0x000001 = 1
キャラクタデータ長 : 0x00001E = 30
不明(データ形式識別子?) : 0x000003 = 3
キャラクタ横幅 : 0x00000C = 12
キャラクタ縦幅 : 0x000010 = 16
・フォント等ベタデータ格納方法(子供川ニダ太郎さんに感謝)。
□□□□□□□
□□□□□□□
■■□□□□□
■■□□□□□
■■□□□□□
■■■■■□□
■■■□■■□
■■□□□■■
■■□□□■■
■■□□□■■
■■□□□■■
■■■□■■□
■■■■■□□
□□□□□□□
□□□□□□□
□□□□□□□
| →
|
■■■■■■□□
■■■■■■□□
□■■□□□□□
□□■□□□□□
□■■□□□□□
■■□□□□□□
■□□□□□□□
□□□■■■■■
□□□■■■■■
□□□■■□□□
□□□■□□□□
□□□■■□□□
□□□□■■■■
□□□□□■■■ 縦8bitずつスライスして右回転したものを並べていく
|
・フォントテーブルとフォントグラフィックデータ位置(3.140K Patch20030421)(Eさんに感謝)。
292 0x05CBCE :Unicode上位2Byteテーブル(Large Font)
293 0x05CED7 :Unicode下位2Byteテーブル(Large Font)
294 0x078A62 :Large Font (ASCII)
295 0x079BF3 :Large Font (2Byte)
296 0x142158 :Shift-JIS上位2Byteテーブル(Large Font)(オリジナルファームではKS Code)
297 0x142461 :Shift-JIS下位2Byteテーブル(Large Font)(オリジナルファームではKS Code)
299 0x159FC9 :Unicode上位2Byteテーブル(Small Font)
300 0x15A2D2 :Unicode下位2Byteテーブル(Small Font)
301 0x175E5D :Small Font (ASCII)
302 0x176DC0 :Small Font (2Byte)
・2Byteフォントデータ領域(Index301,308)の内訳(3.450B(K))(123さん inkyoさんに感謝)。
ブロック
index
----------------------------------------
001〜003 英数字
004〜005 ギリシャ数字等
006〜011 記号・日本語略字関係
011 罫線・日本語外字
012 日本語外字
013 ひらがな・カタカナ
014 韓国語
015〜016 韓国外字
017〜098 日本語
099〜142 韓国語
143〜144 日本語
145 英数字
・フォントテーブル書式(Eさんに感謝)
例) 「初」Unicode:0x0521D のLarge Fontのグラフィックデータ位置
0x0521Dを52と1Dに分解。
↓
上位テーブル中の位置
Index : 0x52 + 1 = 083 なので292-083を参照
↓
上位テーブル中の値
11 00 01 (1バイト目は下位テーブルのBlock Index - 1、3バイト目の01はデータ使用のフラグ)
↓
下位テーブル中の位置
Block Index : 0x11 + 1 = 018
かつ
Index : 0x1D + 1 = 030 なので293-018-030を参照
↓
下位テーブル中の値
0D 11 00 (2バイト目はフォントグラフィックデータのBlock Index - 1、1バイト目はBlock内のイメージデータインデックス)
↓
フォントグラフィックデータの Block Index = 0x11 + 1 = 018 の Index = 0x0D + 1 = 014 にグラフィックが格納されている。
設定ファイル関連
・設定はSETTINGS.DATに記憶。
・FMの記憶方法は日本語版と韓国版で異なる。
《日本版》
バイナリ値=(((周波数-76.0)x 1000) + 10464)の16進数(リトルエインディアン)
例) 99.9 kHz ((99.9-76.0)x1000)+10464)=34364=&H863C よって3C-86
周波数=(バイナリ値-10464)/1000 + 76.0
《韓国版》
バイナリ値=(((周波数-87.5)x 1000) + 21964)の16進数
周波数=(バイナリ値-21964)/1000 + 87.5
ツール動作報告等・NMP412XネタBBS
TOP PAGE