「ファームウェアの改変方法」の編集履歴(バックアップ)一覧はこちら
「ファームウェアの改変方法」(2009/03/05 (木) 17:39:51) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
#contents
*ファームウェアの改変方法 [#fa8907f9]
**目的 [#a4ef51b6]
このページでは吸い出したファームウェアをパソコン上で書き換える方法を説明します。~
次のような場合に、以下の手順に従って書き換えることが可能です。
-言語設定を日本語以外にしたまま吸い出してしまった
-名前を後から変えたくなった
-誕生日の設定を間違えていた
尚、このページは[[こちら>http://setya5785.wordpress.com/2008/01/02/nds-firmware-editing-menggunakan-hex-editor/]]のサイトの情報を元に書きました。~
**必要なもの [#cff5b3db]
-ファームウェアファイル (firmware.bin)
-バイナリエディタ ([[Stirling>http://www.vector.co.jp/soft/dl/win95/util/se079072.html]] がオススメ)
-CRC16(Modbus) を算出出来る術(今回は[[こちら>http://www.lammertbies.nl/comm/info/crc-calculation.html]]のオンラインサイト)
**方法 [#t8c1cea4]
***変更手順 [#qad376de]
例として、言語設定を書き換える方法で説明します。
+バイナリエディタで firmware.bin を開く。
+アドレス ''0x03FE64'' の値を ''0x00'' に書き換える。~
(日本語:0×00 英語:0×01 フランス語:0×02 ドイツ語:0×03 イタリア語:0×04 スペイン語:0×05)
+''0x03FE00'' から ''0x03FE6F'' までをコピーして、上記 CRC16(Modbus) 算出サイトの入力欄にペーストして、Hex にチェックを入れてぽちっとする。
+算出された CRC-16 (Modbus) を ''0x03FE72'' と ''0x03FE73'' に書き込む。~
ただし算出された値が ''0x&color(red){B8};&color(blue){A7};'' だった場合、書き込むのは ''0x&color(blue){A7};&color(red){B8};'' にする。(1バイト目と2バイト目を逆転させる)
+同様にアドレス ''0x03FF64'' の値を ''0x00'' に書き換えて ''0x03FF00'' から ''0x03FF6F'' までをコピーして、CRC16(Modbus) を算出し、その値を逆転させて ''0x03FF72'' と ''0x03FF73'' に書き込む。
+保存する。
以上です。~
適宜バイナリエディタのマーク機能等を使って、間違えたアドレスを書き換えないようにしてください。~
尚、CRC があわない場合や、値が想定外範囲 (例:誕生月を 12 月にしたくて 0x12 とやっちゃうと、18 月になるので想定範囲外)な場合は、初期設定の画面からスタートになります。
分かりやすくするために画像にしました。~
#ref(stirling.png)
-青い部分が言語設定の部分です。(正確にはその下部3ビット分です)
-薄い赤い部分が設定値を書き込む部分であり、CRC16(Modbus) を算出する元となる値です。
-緑の部分が反転させた CRC16(Modbus) を書き込む部分です。
-名前やコメントを編集する際は、メニューで文字コードを utf-16(unicode) にして下さい。
***アドレス一覧 [#m7ac8510]
|アドレス一覧|>|>|>|h
|FW アドレス|RAM アドレス|バイト数|値の意味|h
|0×03Fx00|0×023FFC80|1|バージョン (デフォルトは 0x05?)|
|0×03Fx02|0×027FFC82|1|ユーザーカラー &color(red){※1};|
|0×03Fx03|0×027FFC83|1|誕生月|
|0×03Fx04|0×027FFC84|1|誕生日|
|0×03Fx06|0×027FFC86|20|名前 (UTF-16)|
|0×03Fx1A|0×027FFC9A|1/2|名前の文字数(例:名前が 10 文字なら 0x0A に。)|
|0×03Fx1C|0×027FFC9C|52|コメント (UTF-16)|
|0×03Fx50|0×027FFCD0|1/2|コメントの文字数|
|0×03Fx52|0×027FFCD2|1|アラームの時(hour)|
|0×03Fx53|0×027FFCD3|1|アラームの分(minute)|
|0×03Fx56|0×027FFCD6|1|0×80=enable alarm, bit 0..6=enable?|
| |0×027FFCD8|12|タッチスクリーンキャリブレーションデータ|
| |0×027FFCE4|bit 0..2|言語設定 &color(red){※2};|
| |0×027FFCE4|bit 3|GBAソフトの画面 (0=上画面, 1=下画面)|
| |0×027FFCE4|bit 6|起動モード 0=マニュアルモード, 1=オートモード|
| | | |WIFI power calibration|
|0×03Fx70| |1/2|update counter (used to check latest)|
|0×03Fx72| |2|CRC16(Modbus)|
アドレスの 0x03F&color(red){x};XX の &color(red){x}; は ''E'' か ''F'' で読み替えてください。~
~
|※1 ユーザーカラー一覧|>|>|h
|値(10進数)|色|RGB|
|0|グレー|(12, 16, 19)|
|1|茶色|(23, 9, 0)|
|2|赤|(31, 0, 3)|
|3|ピンク|(31, 17, 31)|
|4|オレンジ|(31, 18, 0)|
|5|黄色|(30, 28, 0)|
|6|黄緑|(21, 31, 0)|
|7|緑|(0, 31, 0)|
|8|深緑|(0, 20, 7)|
|9|青緑|(9, 27, 17)|
|10|水色|(6, 23, 30)|
|11|青|(0, 11, 30)|
|12|群青|(0, 0, 1)|
|13|青紫|(17, 0, 26)|
|14|赤紫|(26, 0, 29)|
|15|マゼンタ|(31, 0, 1)|
~
|※2 言語設定一覧|>|h
|言語|値|h
|日本語|0|
|英語|1|
|フランス語|2|
|ドイツ語|3|
|イタリア語|4|
|スペイン語|5|
***変更例 [#y38e9495]
-例1:言語設定でスペイン語にしたければ、''0x03Fx64'' (つまり 0x03FE64 と 0x03FF64) を ''0x05'' に書き換えて、CRC 算出&書き換え。
-例2:名前を hogehoge にしたければ、''0×03Fx06'' を起点に ''hogehoge'' と (画像のようになるように右半分の部分で) 入力し、ついで ''0×03Fx1A'' を 8 文字にあわせて ''0x08'' と書き換えて、CRC 算出&書き換え。
-例3:誕生日を 12 月 23 日にしたければ、''0×03Fx03'' を ''0x0C''、''0×03Fx04'' を ''0x17'' に書き換えて、CRC 算出&書き換え。
-例4:ユーザーカラーを水色にしたければ、''0×03Fx02'' を ''0x0A'' に書き換えて、CRC算出&書き換え。