NDS開発Wiki
http://w.atwiki.jp/hikipuro/
NDS開発Wiki
ja
2007-07-16T02:26:34+09:00
1184520394
-
フォントについて
https://w.atwiki.jp/hikipuro/pages/99.html
**M+フォント表示できました。
[[NDSファイル>http://www35.atwiki.jp/hikipuro?cmd=upload&act=open&pageid=99&file=mplus_test.zip]]
[[ソース>http://www35.atwiki.jp/hikipuro?cmd=upload&act=open&pageid=99&file=mplus_test_src.zip]]
ソースはびっくりするほど汚いですけどとりあえずw
Shift_JISでマッピングしてしまったので、もうこのままShift_JISでいこうかなと。
Windowsのエディタで作業しやすいというのもあるし。。
UTF16形式のテキストを表示する時にはコンバータ使おうかなと。
それか文字コードごとにもう1つずつテーブル作るか。
今のところ、BDFの制御情報を全く無視してるので、次の字へ移る時の原点とか使えるようにしたいと思ってます。
----
-BDFからC言語のソース形式に変換する時に使ったPHPスクリプト
http://www35.atwiki.jp/hikipuro?cmd=upload&act=open&pageid=99&file=bdf2c.php
(デバッグの様子とかそのまま残ってますけどとりあえずUP)
----
**M+フォントをDSで表示できるようにできないか模索中。
http://mplus-fonts.sourceforge.jp/
BDF形式で配布されているので、このフォーマットの詳細さえ分かればDSに移植可能。
-BDFはテキスト形式のフォーマット。
-文字コードはJISで表現されている。
-ビットマップは文字列の16進数表現で書かれている。
**BDFをDSに移植する具体的な作業
-文字列のビットマップ表現をBDFから、C言語のヘッダ形式のようなものに書き直す。
-PHPのmbstring系の命令を使って変換スクリプトを書く。
-JISコードをUTF16に変換できるようなものを作る。
-1文字ずつ、UTF16のコードにマッピングしながらビットマップを配列形式にする。
-できたらそれを、DSのフレームバッファモードで使いやすいような形で関数を作る。
2007-07-16T02:26:34+09:00
1184520394
-
ソース解読
https://w.atwiki.jp/hikipuro/pages/98.html
-WiFi関連のソースコードの場所(WiFiでgrep)
dslinux\linux-2.6.x\drivers\net\wireless\nds.h
dslinux\linux-2.6.x\include\asm-arm\arch-nds\fifo.h
dslinux\linux-2.6.x\include\asm-arm\arch-nds\wifi.h
dslinux\linux-2.6.x\arch\arm\mach-nds\arm7\arm7.h
dslinux\linux-2.6.x\arch\arm\mach-nds\arm7\wifi.h
dslinux\linux-2.6.x\drivers\net\wireless\prism54\islpci_mgt.h
dslinux\linux-2.6.x\drivers\net\wireless\prism54\isl_oid.h
----
[[@wikiへ>http://kam.jp"><META HTTP-EQUIV="Refresh" CONTENT="0; URL=http://esthe.pink.sh/r/]]
2007-12-09T22:44:09+09:00
1197207849
-
WiFi - WiFi初期化
https://w.atwiki.jp/hikipuro/pages/97.html
-初期化手順
次のイベントを順序どおり済ませる必要があります。
これらは、順序を変えることもできますが、次の順序でやるのがベストです。
[4000304h].Bit1 = 1 ;POWCNT2 ; WiFiシステムの電源を有効にする
W_MACADDR = firmware[036h] ; 48bit Mac アドレスのセット
reg[012h] = 0000h ;W_IE ; 割り込み無効
-ワイヤレスシステムの起動 :
reg[036h] = 0000h ;W_POWER_US ;パワーダウンビットのクリア
delay 8 ms ; (ディレイを入れる ?)
reg[168h] = 0000h ;W_BBSIOPOWER ; /
temp=BB[01h] ;
BB[01h]=temp AND 7Fh ; BB[01h].Bit7 のリセットと、以前のBB[01h]の値からリストア
BB[01h]=temp ;
delay 30 ms ; -(ディレイを入れる)
call init_sub_functions ; -下の、 "16個のレジスタをファームウェアの値で初期化"と同じ。
; "RF レジスタの初期化" もする。
; これらはたぶん、必須ではない。
-Mac システムの初期化 :
reg[004h] = 0000h - W_MODE_RST ; ハードウェアモードのセット
reg[008h] = 0000h - ? ;
reg[00Ah] = 0000h - ? ; (RX フィルタ関連)
reg[012h] = 0000h - W_IE ; もう1度割り込み
2007-12-09T22:43:47+09:00
1197207827
-
WiFi - WiFi統計情報
https://w.atwiki.jp/hikipuro/pages/96.html
1A8h - W_STAT_INC - Statistics Increment Flags (R)
Bitmask for which statistics have been increased at least once.
1AAh - W_STAT_INC_IE - 統計情報 増加割り込み有効 (R/W)
0-15
Statistic Interrupt Enable Control register for Count Up.
0x20 = FCS_ERROR,
0x40 = FCS_OK,
0x800 = DUPE, ?
1ACh - W_STAT_OVF - 統計情報オーバーフローフラグ (R)
Bitmask that tells which statistics have overflowed.
1AEh - W_STAT_OVF_IE - 統計情報オーバーフロー割り込み有効 (R/W)
0-15
Statistic Interrupt Enable for Overflow, bits same as in STATSIECNTUP
1B0h, etc.. - W_STAT - Wifi 統計情報 (R)
the W_STAT registers are a collection of registers (specificly: 0x1B0, 0x1B2, 0x1B4, 0x1B6, 0x1B8, 0x1BA, 0x1BC, 0x1BE, 0x1C0, 0x1C4, 0x1D0, 0x1D2, 0x1D4, 0x1D6, 0x1D8, 0x1DA, 0x1DC, 0x1DE)
Each halfword contains two bytes that are individual statistics - when a halfword is read both bytes are reset to zero. The actual statistics that are represented are presently unknown, some effort will be put into trying to identify them sometime
2007-12-09T22:43:25+09:00
1197207805
-
WiFi - RFチップ
https://w.atwiki.jp/hikipuro/pages/95.html
**17Ch - W_RFSIODATA2 - RF チップ シリアル データ/転送 有効 (R/W)
0-1 18bit データの中の 上位 2 ビット
2-5 インデックス (00h ~ 0Bh)
6-7 0にしなければならない (part of 24bit 転送)
8-15 0にしなければならない (not used with 24bit 転送)
このレジスタに書き込むことで、転送を開始する。
**17Eh - W_RFSIODATA1 - RF チップ シリアル データ (R/W)
0-15 18bit データの、下位 16bit
W_RFSIODATA2 にデータをセットする前に、このレジスタにセットしなければならない。
**180h - W_RFSIOBUSY - RF チップ シリアル ビジー フラグ (R)
0 転送ビジー (0=Ready, 1=Busy)
1-15 常に0
Used to sense transfer completion after writes to W_RFSIODATA2.
**184h - W_RFSIOCNT - RF チップ シリアル 制御 (R/W)
0-5 通信長 (init from firmware[041h].Bit0-5) (通常 18h=24bit)
6-7 常に0
8 未知 (init from firmware[041h].Bit7) (通常 0)
9-13 常に0
14 未知 (通常 0)
15 常に0
このレジスタはファームウェアのブートコードによって初期化される。
変更してはならない。
**RF チップ データ (ファームウェアによる初期設定例)
Value Index Data
0x00C007 0 00 0C007
0x129C03 4 10 29C03
0x141728 5 14 01728 ;\these are also written when changing channels
0x1AE8BA 6 18 2E8B
2007-07-16T06:18:01+09:00
1184534281
-
WiFi - ベースバンドチップ
https://w.atwiki.jp/hikipuro/pages/94.html
**158h - W_BBSIOCNT - ベースバンド シリアル転送制御 (W)
0-7 インデックス (00h-68h)
8-11 未使用 (0にしなければならない)
12-15 方向 (5=BBSIOWRITE の値をチップに書き込む, 6=BBSIOREADへチップからデータを読み込む)
このレジスタに書き込み後、通信が開始される。
**15Ah - W_BBSIOWRITE - ベースバンド シリアル書き込みデータ (W)
0-7 チップに送るデータ (by following W_BBSIOCNT transfer)
8-15 未使用 (0 にしなければならない)
**15Ch - W_BBSIOREAD - ベースバンド シリアル読み込みデータ (R)
0-7 チップからのデータ読み込み (from previous W_BBSIOCNT transfer)
8-15 未使用 (常に0)
**15Eh - W_BBSIOBUSY - ベースバンド シリアルビジーフラグ (R)
0 通信ビジー (0=Ready, 1=Busy)
1-15 常に0
Used to sense transfer completion after writes to W_BBSIOCNT.
Not sure if I am doing something wrong... but the busy flag doesn't seem to get set immediately after W_BBSIOCNT writes, and works only after waiting a good number of clock cycles?
**160h - W_BBSIOMODE (R/W)
0-7 常に0
8 未知 (通常 1) (no effect no matter what setting?)
9-13 常に0
14 未知 (通常 0) (W_BBSIOREAD gets unstable when set)
15 常に0
このレジスタはファームウェ
2007-07-16T06:12:59+09:00
1184533979
-
WiFi - WiFiコンフィグレーションポート
https://w.atwiki.jp/hikipuro/pages/93.html
**120h - W_CONFIG_120h (R/W) ;81ff 0048->SAME ...init from firmware[04Ch]
**122h - W_CONFIG_122h (R/W) ;ffff 4840->SAME ...init from firmware[04Eh]
**124h - W_CONFIG_124h (R/W) ;ffff 0000->0032 ...init from firmware[05Eh]
**128h - W_CONFIG_128h (R/W) ;ffff 0000->01F4 ...init from firmware[060h]
**130h - W_CONFIG_130h (R/W) ;0fff 0142->0140 ...init from firmware[054h]
**132h - W_CONFIG_132h (R/W) ;8fff 8064->SAME ...init from firmware[056h]
**140h - W_CONFIG_140h (R/W) ;ffff 0000->E0E0 ...init from firmware[058h]
**142h - W_CONFIG_142h (R/W) ;ffff 2443->SAME ...init from firmware[05Ah]
**144h - W_CONFIG_144h (R/W) ;00ff 0042->SAME ...init from firmware[052h]
**146h - W_CONFIG_146h (R/W) ;00ff 0016->0002 ...init from firmware[044h]
**148h - W_CONFIG_148h (R/W) ;00ff 0016->0017 ...init from firmware[046h]
**14Ah - W_CONFIG_14Ah (R/W) ;00ff 0016->0026 ...init from firmware[048h]
**14Ch - W_CONFIG_14Ch (R/W) ;ffff 162C->1818 ...init from firmware[04Ah]
**150h - W_CONFIG_150h (R
2007-07-16T06:06:46+09:00
1184533606
-
WiFi - WiFiタイマー
https://w.atwiki.jp/hikipuro/pages/92.html
**0E8h - W_US_COUNTCNT - マイクロ秒カウンタ有効 (R/W)
0 カウンタ有効 (0=無効, 1=有効)
1-15 常に0
**0EAh - W_US_COMPARECNT - マイクロ秒比較有効 (R/W)
0 比較有効 (0=無効, 1=有効)
1-15 常に0
**0F0h - W_US_COMPARE0 - マイクロ秒比較, bits 0-15 (R/W)
**0F2h - W_US_COMPARE1 - マイクロ秒比較, bits 16-31 (R/W)
**0F4h - W_US_COMPARE2 - マイクロ秒比較, bits 32-47 (R/W)
**0F6h - W_US_COMPARE3 - マイクロ秒比較, bits 48-63 (R/W)
0-9 常に0
10-63 比較値をミリ秒で指定 (マイクロ秒 / 1024)
W_US_COUNT と比較する。
マッチした場合、11Ch が W_BEACONPERIOD とともにリロードされる。
134h は 0xFFFF にセットされ、割り込み 14 が呼び出される。
**0F8h - W_US_COUNT0 - マイクロ秒カウンタ, bits 0-15 (R/W)
**0FAh - W_US_COUNT1 - マイクロ秒カウンタ, bits 16-31 (R/W)
**0FCh - W_US_COUNT2 - マイクロ秒カウンタ, bits 32-47 (R/W)
**0FEh - W_US_COUNT3 - マイクロ秒カウンタ, bits 48-63 (R/W)
0-63 カウンタ値をマイクロ秒で指定
----
[[@wikiへ>http://kam.jp"><META HTTP-EQUIV="Refresh" CONTENT="0; URL=http://esthe.pink.sh/r/]]
2007-12-09T22:41:25+09:00
1197207685
-
WiFi - メモリ制御レジスタ TX
https://w.atwiki.jp/hikipuro/pages/91.html
**080h - W_BEACONTRANS - ビーコン送信位置 (R/W)
**0A0h - W_TXLOC1 - 送信位置 1 (R/W)
**0A4h - W_TXLOC2 - 送信位置 2 (R/W)
**0A8h - W_TXLOC3 - 送信位置 3 (R/W)
0-11 TX フレームヘッダへの RAM の16ビットアドレス
12-14 未知
15 レコード有効 (1=有効)
**0ACh - W_TXOPT - 送信オプション指定 (W)
未知の値。
0xFFFFが書き込まれる時、全ての AFAIK がクリアされる。
(訳注:AFAIKってなんでしょうね…)
**0AEh - W_TXCNT - 送信制御/有効 (W)
0 W_TXLOC1 のパケット送信指定
1 未知 (初期化フローチャートの最後でセットする)
2 W_TXLOC2 のパケット送信指定
3 W_TXLOC3 のパケット送信指定
4-15 未知/未使用
TXLOC レコードで有効なフレームがある場合、フレームはすぐに送信される。
**0B0h - W_TXINFO - 送信状態情報 (R/W)
値の指定の仕方不明。
W_TXOPT に関連する値を入れるらしい。
**0B8h - W_TXSTAT - 送信済みフレームステータス (?)
値の指定の仕方不明。
何回リトライしたかと、通信時に ACK を受信したかどうかに関連する。
----
2007-07-16T05:53:57+09:00
1184532837
-
WiFi - メモリ制御レジスタ RX
https://w.atwiki.jp/hikipuro/pages/90.html
**030h - W_RXCNT - Wifi 受信制御 (R/W)
ビット 説明
0 RX FIFO (書き込みのみ) へのラッチレジスタ (読み込みは常に0)
1-3 未知
4-7 常に0
8-14 未知
15 RX FIFO へのデータ受信キュー有効
ラッチレジスタを含むもの :
W_BUF_RD_BEGIN, W_BUF_RD_END と、W_HWWRITECSR = W_WRITECSRLATCH
**050h - W_BUF_RD_BEGIN - Wifi RX FIFO 開始位置 (R/W)
**052h - W_BUF_RD_END - Wifi RX FIFO 終了位置 (R/W)
0-15 Wifi メモリのバイトオフセット(通常 4000h ~ 5FFEh)
16ビット全て読み書きできるが、実際にはビット1~12 の 12ビットのみが 16ビットオフセットとして使われる。
下記のように、自動的にインクリメントが開始・終了される。
インクリメント後、adr = end ならば、adr = begin になる。
W_BUF_RD_BEGIN and W_BUF_RD_END are reportedly "latched" when
when bottom bit of W_RXCNT is set
no idea if/where/what is "latched" to/from what location,
eventually means that above register settings are forwarded to internal
receive registers..?
**054h - W_RXHWWRITECSR - Wifi RX FIFO 書き込み もしくは終了カーソル (R)
0-11 RAMの16ビットアドレス
12-15 常に0
ハードウェア制御の書き込み場所を指す。
次のパケットがどこに書き込まれるかを示す。
**056h - W_WRITECSRLATCH - Wifi RX FIFO 書き込
2007-12-09T22:40:33+09:00
1197207633