XIPへのnls入れ替え

XIPにあるwince.nlsの入れ替えに成功したので忘れないうちに覚書。


(0)必要なツールの準備
今回kitchenはV5の方を使いました。
osnbtools
xipport
Samsung i780 kitchen
V5 Kitchen


(1)i780.nb0.payload.bodyの準備
i780 kitchenでdumpフォルダ内のIMGFSのカスタマイズはすべて済ませたうえで一旦i780.nb0.payloadを作成する。ファイルベースのカスタマイズ方法はこちら
続いて下記コマンドでi780.nb0.payloadをi780.nb0.payload.headerとi780.nb0.payload.bodyに分割する。


split i780.nb0.payload


(2)XIPのダンプ
osnbtoolのインストール先フォルダにi780.nb0.payload.bodyをコピーして次のコマンドを実行。

osnbtool -d i780.nb0.payload.body 1 xip.bin

OS ROM Partition Tool V1.41 By Weisun :> PDAclan.com
Sector size : 0x00000800
Extra data bytes : 0x00000000
OS IMAGE found.
Partitions infomation:
**************************************
Part-0 type: BOOT SECTION image
Part-1 type: XIP RAM Image
Part-2 type: IMGFS file system
Part-3 type: legit DOS partition
**************************************
Signature: SRPX
CompressVersion: 5
Uncompressed size: 389000
Deompress processing...
Successfully decompressed to xip.bin

これでxip.binが作成される。


(2)XIPのカスタマイズ
XIPPORTインストール先フォルダにxip.binをコピーしてXIPPort.exeを起動。
dump xip binをクリック > これでOUTフォルダにXIPがダンプされる。
write mapsをクリック > これでMAP.txtとMAP.physical.txtが作成される。


※次の部分は今回wince.nlsの置き換えのみ行う前提で説明。
OUT>FILESフォルダを開き、wince.nls(889,018バイト、HEXだと000D90BA)を用意した日本語表示できるもの(391,146バイト、HEXだと0005F7EA)と置き換える。
続いてwince.nls.imageinfo.txtをメモ帳で開き、nRealFileSize:000D90BAとnCompFileSize:000D90BAの部分を置き換えたwince.nlsのファイルサイズのHEX値に変更して上書き保存する。


realloc Pをクリック > これでマップが修正されているはずなので、先のMAP.txtとMAP.physical.txtを別の場所へ退避させて再度write mapsをクリック。作成されたmapをそれぞれ開いてwince.nlsの箇所を検索し次のように889018が391146となっていればOK。


元のMAP.txt
80194bd4 - 80194bf0 L0000001c filent 0 00000007 01c805b5affef400 889018 889018 80295048 wince.nls
元のMAP.physical.txt
00193bd4 - 00193bf0 L0000001c filent 0 00000007 01c805b5affef400 889018 889018 80295048 wince.nls


置き換え後のMAP.txt
80194bd4 - 80194bf0 L0000001c filent 0 00000007 01c805b5affef400 391146 391146 80295048 wince.nls
置き換え後のMAP.physical.txt
00193bd4 - 00193bf0 L0000001c filent 0 00000007 01c805b5affef400 391146 391146 80295048 wince.nls


build xip_out.binをクリック。
これで変更済みのxip_out.binが作成される。


(3)カスタマイズ済XIPのi780.nb0.payload.bodyへ結合
osnbtoolのインストール先フォルダにxip_out.binをコピーして次のコマンドを実行。


osnbtool -c i780.nb0.payload.body 1 xip_out.bin

OS ROM Partition Tool V1.41 By Weisun :> PDAclan.com
Sector size : 0x00000800
Extra data bytes : 0x00000000
OS IMAGE found.
Partitions infomation:
**************************************
Part-0 type: BOOT SECTION image
Part-1 type: XIP RAM Image
Part-2 type: IMGFS file system
Part-3 type: legit DOS partition
**************************************
Source OS image:
Signature: SRPX
CompressVersion: 5
Uncompressed size: 389000
Source Part-1 Size: 2E0000

                                                                          • -

Compress processing...
NEW Uncompressed size: 2B0000
NEW Compressed size: 187595
New Part Size: 187B39
Successfully compressed xip_out.bin into i780.nb0.payload.body.NEW

これでXIP変更済みのi780.nb0.payload.body.NEWが作成される。


(4)i780.nb0.payload.headerとi780.nb0.payload.bodyの結合
次のコマンドでi780.nb0.payload.body.NEWをheaderと結合してXIP変更済みのi780.nb0.payloadを作成する。
続けてextraを結合してi780.nb0を作成する。


merge i780.nb0.payload.header i780.nb0.payload.body.NEW i780.nb0.payload
nbmerge -data 2048 -extra 8 i780.nb0 -conservative


(5)Nb0からBinへ変換
最後にConvertNb0ToBin.bat(次のコマンド)を実行し、i780_flashable_bin.binを作成。


conv3 input.txt > conv3_output.txt
ren i780.nb0.b000ff i780_flashable_bin.bin


conv3_output.txtを開き、最終行のAddress: 5292400が元のi780.binをdumpした際に作成されたbintonb0.txtの最後から2行目のStart: 5292400を一致していればOK。


大体こんな感じでちゃんと起動するROMができました。