CopyNES のしくみ
Welcome! - retroUSBでUSB CopyNESを購入した。
CopyNESとは、NESのカートリッジをコピーする装置です。NESのCPUを取り外して、CopyNESの基板を取り付けることで、PCからNESをコントロールできるようになります。PCからNESを制御することで、カートリッジを読み出します。
動作原理はリモートデバッガと同じなので、リモートデバッガを勉強するのに良い素材だと思う。
CopyNESのしくみを理解するために、http://tripoint.org/kevtris/Projects/copynes/tech.htmlの内容を軽くまとめてみた。
CopyNESの動作概要
CopyNESのブート時の動作
- 電源起動時に、カートリッジのROMを無効にし、CopyNESのROMを読み込ませる。
- CopyNESのROMを1000-1FFF, 3000-3FFFにマップする。
- 割り込みベクタのジャンプ先を、CopyNESの領域に変更する。
- カートリッジのROMを通常の領域である8000-FFFFにマップする。
CopyNESのモード
- play mode 普通にゲームが動くモード
- copy mode パラレルポートからの指示を待つモード
CopyNESの部品
- 74157 A12-15のアドレス線セレクタ
- 74138 CopyNESのEEPROMと6522用のアドレスデコーダ
- 6522 6502用のUART通信チップ PCとの通信用
- 27C64 64kbit EEPROM (8Kバイト)
CopyNESのソフトウェア
- ホスト側のコードはQBASICで作成(その後Visual Cに移植)
- NES用のコードは6502アセンブラで作成
- プラグイン機能で各種マッパーに対応
- カートリッジから読み出したデータは.NESファイルとして保存する。
オプション
うーん、やっぱりコードを読まないと良くわからない部分が多い。理解するために、CopyNESをエミュレータで動かすというのも素敵な気がする。
USB CopyNESは、ファミコンに取り付けることを考えています。だけど、ファミコンにUSB CopyNESを取り付ける場合には、ファミコンをケースから出さないとだめだし、さらにリセットスイッチが干渉するので、外さないと基板が乗っからない。
ebayのRSS
ebayのRSSが、2008年の後半から普通の手段で取得できなくなっています。
なので、個人的に調べたebayのfeedのURLを紹介します。
ストアのフィード
例:Select Classic Car Parts and Gifts
みんなで、散財しましょう。
IEEE 802.11r について シーケンス
「IEEE 802.11r について フレームフォーマット - eggmanの日記」の続きです、fast BSS transitionのシーケンスを眺めていたら、高速化の理由が分かった。とりあえずWPA-PSKの場合のみを考えます。
高速化のポイント
- Deauthしない
- WPAの4 WAYをしない。
- そのかわり、Auth,Auth,Reassoc Req, Reassoc Respで4WAYの情報をやり取りする。
- 通常の場合よりもフレームが18個から6個に減るので、ローミングは高速になる。
- Normal:18
- Deauth,ack,Auth,ack,Auth,ack,Reassoc Req,ack,Reassoc Resp,ack,EAPOL,ack,EAPOL,ack,EAPOL,ack,EAPOL,ack
- 802.11r fast BSS transition:8
- Auth,ack,Auth,ack,Reassoc Req,ack,Reassoc Resp,ack
- Normal:18
最初の接続
フレームのやりとりは既存のWPA-PSKと同じです。フレームに11rのIEが追加されています。
STA | -Auth-> | AP |
---|---|---|
STA | <-Auth- | AP |
STA | -Assoc Req(MDIE, RSNIE)-> | AP |
STA | <-Assoc Resp(MDIE, FTIE[R1KH-ID, R0KH-ID])- | AP |
STA | <-EAPOL-Key(0,0,1,0,P,0,ANonce,0)- | AP |
STA | -EAPOL-Key(0,1,0,0,P,0,SNonce,MIC,RSNIE[PMKR1Name],MDIE,FTIE)-> | AP |
STA | <-EAPOL-KEY(1,1,1,1,P,0,ANonce,MIC,RSNIE[PMKR1Name],MDIE,GTK[N],FTIE,TIE[ReassociationDeadline],TIE[KeyLifetime])- | AP |
STA | -EAPOL-Key(1,1,0,0,P,0,0,MIC)-> | AP |
高速ローミングのシーケンス
Deauthなしで、Target APにAuthできる。
STA | -Auth(FTAA,RSNIE,MDIE,FTIE[SNonce,R0KH-ID])-> | -> | Target AP |
---|---|---|---|
STA | <-Auth(FTAA,RSNIE,MDIE,FTIE[ANonce,SNonce,R1KH-ID,R0KH-ID])- | -- | Taret AP |
STA | -Reassoc Req(RSNIE,MDIE,FTIE(MIC,ANonce,SNonce,R1KH-ID,R0KH-ID],RIC-Request | -> | TargeAP |
STA | <-Reassoc Resp(RSNIE,MDIE,FTIE[MIC,ANonce,SNonce,R1KH-ID,R0KH-ID],RIC-Response)- | -- | Target AP |
参考:IEEE 802.11r chapter 11A
IEEE 802.11r について フレームフォーマット
http://standards.ieee.org/getieee802/にてIEEE 802.11rの仕様書がダウンロードできるようになってた。
802.11rとは、WiFiで高速ローミングするための規格になります。パラパラと眺めてみて、フレームフォーマットについて分まとめてみた。
- fast BSS transition : 高速ローミングのこと
- Current AP : 現在繋がっているAP
- Target AP : ローミング先のAP
- Managementフレームに追加されたIE
- IEの要素
- 追加されたフレーム(Action frame)
- FT Request : STA -> AP
- FT Response : AP -> STA
- FT Confirm : STA -> AP
- FT Ack : AP -> STA
どうして高速でローミングできるかはまだわからない。また後でしらべてみます。
IGDA SIG-GT12「ゲームにおけるスクリプト言語の現状」のレポート
http://www.igda.jp/modules/eguide/event.php?eid=58へ行ってきた。
CRI Scriptの実装の話が面白かったです。
メモをとりました。内容は保証しませんので…
CriScript @ errorの人
- 趣味と実益をかねて開発
- コンシューマーゲームのゲームエンジンの組み込みをやっている
- 大規模ゲーム開発では、スクリプト言語はスタンダード 特にヨーロッパ、アメリカ
- 予言 五年後、ゲームコードの殆どはスクリプト言語で記述される。
- CriScript オープンソースのECMA262実装 Win32/Xbox360/OSX/iPhone
- SPUにも移植したいが…
- 標準仕様の採用
- 利点 ある程度こなれた言語仕様 既存のテストコードが使える オープンである
- 欠点 仕様規模が大きい(ゲームには不要そうな機能も) ヲレ拡張が難しい 組み込みに向いていない仕様もある
- Webのアクセス数
- 200-300/day アメリカ、日本、 意外とロシアが多い。
- 実装編
- flexは使わないで自前コード
- バイトコードの選択がパフォーマンスに影響する。慎重に。
- Q バイトコードの乗り換えはどれくらいかかるのか。
- A やりたくない。 コードジェネレータとVMを書き換えないといけない。
- スタックマシン
- 実装が容易
- ディスパッチループ
- 単純なスイッチ文
- ダイレクトスレッド、コンテクストスレッド やってみたがあまり効果が無かった。
- Q スタックマシンが最適でない どれくらい違うと考えているのか by 笹田先生
- A スタックだと、4回かかるバイトだと1回でできる。3,40%早くなるのは
- Q コードをみたけど、最適化の余地がるby 笹田先生
- A ためしてみます。
- BooSt::Regenを使ったらVMの30%のコード
- 今後はいらないライブラリをリンクしないようにしたい。
- ネイティブコード生成
- CriScriptでは
- 静的なevalのみ許可
- パフォーマンス
- ネィティブコード比 1/7-1/20ぐらいのパフォーマンス
- Luaのパフォーマンスをリファレンスにしている。
- 最適化の軸
- 最適化の例
- error参照
- 非常にショックを受けて最適化を行った。
- どっかに書いてある。お
- フットプリント
- IXMF
Luaの発表とパネルのメモもあるけど、中途半端すぐる。
MMC plus HS と SDXCについての予想
MMC(wikipedia)には、MMC Specification 4.0から8bit modeが追加されている。
8bit Modeではピンが13ピンになってます。
beagle boardには8bit対応スロットが搭載されているので、対応カードを欲しいなぁと思っていたら、トランセンドが作っていた。4GBのMMCplus HSカードを注文しといた。
MMC 4.3では、8bit modeでHS対応の場合をバス上の最大データレートが52MBbytes/sec (8bit x 52MHz)となります。
ちなみに、MMC 4.3の規格書は、JEDECのページから、登録すれば無料ダウンロードできる。(Home | JEDEC)
MMC 4.4では最大104MBytes/secとなる(NE)ので、おそらくバスのクロックが104MHzとなるんじゃないかな。
SDXCも今年は、104Mbytes/secを達成するということ(techon)なので、、MMCと同じく8bit Modeを新たに作って、バスクロックを104MHzにすると予想してみる。(52MHzのDDRにして、両エッジを使うという可能性もあるが。)
でも300MBytes/secを目指すためには、この方向では厳しいです。変調が必要でしょ。